如何查找字符串中第n次出现的字符?

新手上路,请多包涵

此处 发布的问题类似,我正在寻找 Java 中的解决方案。

即,如何从字符串中找到第n次出现的字符/字符串的索引?

示例:/folder1/folder2/folder3/ ”。在这种情况下,如果我要求第 3 次出现斜杠 (/),它会出现在 folder3 之前,我希望返回这个索引位置。我的实际意图是从第 n 次出现的字符开始对其进行子字符串化。

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

还,

  1. 我很快在 Apache Commons Lang 的 StringUtils 上搜索了是否为此目的支持任何方法,但我没有找到任何方法。
  2. 正则表达式在这方面有帮助吗?

原文由 Gnanam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 677
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;
}


这篇文章已被重写为一篇文章 here

原文由 aioobe 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题