类似于here上发布的一个问题,我正在寻找Java的解决方案。
也就是说,如何从字符串中找到第n次出现的字符串的索引?
示例:"/folder1/folder2/folder3/".在本例中,如果我请求第三次出现斜杠(/),它会出现在folder3之前,并且我希望返回这个索引位置。我的实际意图是从第n个出现的字符中子串它。
Java API中有没有什么方便易用的方法,或者我们需要自己写一个小逻辑来解决这个问题?
另外,
发布于 2010-10-20 18:02:43
如果你的项目已经依赖于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;
}
这篇文章已经被重写为一篇文章here。
发布于 2012-08-01 04:55:29
我认为查找字符串第N次出现的最简单的解决方案是使用Apache Commons中的StringUtils.ordinalIndexOf()。
示例:
StringUtils.ordinalIndexOf("aabaabaa", "b", 2) == 5
发布于 2010-10-20 18:01:00
出现两个简单的选项:
charAt()
repeatedlyindexOf()
repeatedly例如:
public static int nthIndexOf(String text, char needle, int n)
{
for (int i = 0; i < text.length(); i++)
{
if (text.charAt(i) == needle)
{
n--;
if (n == 0)
{
return i;
}
}
}
return -1;
}
这可能不如反复使用indexOf
那么好,但可能更简单。
https://stackoverflow.com/questions/3976616
复制相似问题