如何在字符串中找到第n个出现的字符?

2022-08-31 09:46:03

这里发布的一个问题类似,我正在寻找Java的解决方案。

也就是说,如何从字符串中查找字符/字符串第n次出现的索引?

例:/folder1/folder2/folder3/”。在这种情况下,如果我要求斜杠(/)的第3次出现,它出现在文件夹3之前,我希望返回此索引位置。我的实际意图是从字符的第n次出现来子字符串化它。

Java API中是否有任何方便/即用的方法,或者我们是否需要自己编写一个小逻辑来解决这个问题?

  1. 我快速搜索了Apache Commons Lang的StringUtils中是否支持任何方法,但我找不到任何方法。
  2. 正则表达式在这方面能有所帮助吗?

答案 1

如果你的项目已经依赖于Apache Commons,你可以使用StringUtils.ordinalIndexOf,否则,这里有一个实现:

public static int ordinalIndexOf(String str, String substr, int n) {
    int pos = str.indexOf(substr);
    while (--n > 0 && pos != -1)
        pos = str.indexOf(substr, pos + 1);
    return pos;
}

这篇文章已经重写为一篇文章在这里


答案 2

我相信找到字符串的第N次出现的最简单解决方案是使用来自Apache Commons的StringUtils.ordinalIndexOf()。

例:

StringUtils.ordinalIndexOf("aabaabaa", "b", 2)  == 5