在Java中查找string中第二次出现的子string

给我们一个string,比如说"itiswhatitis"和一个子string,比如说"is" 。 当string"is"在原始string中第二次出现时,我需要find'i'索引

在这种情况下, String.indexOf("is")将返回2。 在这种情况下,我希望输出是10。

5 Solutions collect form web for “在Java中查找string中第二次出现的子string”

使用indexOf()重载版本,它将开始的indes作为第二个参数:

 str.indexOf("is", str.indexOf("is") + 1); 
 int first = string.indexOf("is"); int second = string.indexOf("is", first + 1); 

这个重载开始寻找来自给定索引的子串。

我正在使用: Apache Commons Lang:StringUtils.ordinalIndexOf()

 StringUtils.ordinalIndexOf("Java Language", "a", 2) 

我认为可以使用循环。

 1 - check if the last index of substring is not the end of the main string. 2 - take a new substring from the last index of the substring to the last index of the main string and check if it contains the search string 3 - repeat the steps in a loop 

你可以编写一个函数来返回出现位置的数组,Java有String.regionMatches函数,非常方便

 public static ArrayList<Integer> occurrencesPos(String str, String substr) { final boolean ignoreCase = true; int substrLength = substr.length(); int strLength = str.length(); ArrayList<Integer> occurrenceArr = new ArrayList<Integer>(); for(int i = 0; i < strLength - substrLength + 1; i++) { if(str.regionMatches(ignoreCase, i, substr, 0, substrLength)) { occurrenceArr.add(i); } } return occurrenceArr; } 
  • Java String.valueOf(null)抛出NPE,但Object a = null; String.valueOf(a)返回'null'
  • Java中的string比较
  • 为什么表情符号像👩👩👧👦在Swift中被如此奇怪地对待?
  • 检查子string存在于C中的一个string中
  • 如何使用Python逻辑来检查回文
  • 如何testingstring存在与Bash shell的文件?
  • MySql查询在select中用空stringreplaceNULL
  • 部分string格式
  • 以大写字母拆分string
  • 什么是Ruby的等同于Python的s =“hello,%s。 %s?%(“John”,“Mary”)`
  • String.Replace(char,char)在C#中的方法