recorrer - Encontrar la segunda aparición de una subcadena en una cadena en Java
recorrer una cadena en java (5)
Creo que se puede usar un ciclo.
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
Nos dan una cadena, por ejemplo, "itiswhatitis"
y una subcadena, por ejemplo, "is"
. Necesito encontrar el índice de ''i''
cuando la cadena "is"
aparece por segunda vez en la cadena original.
String.indexOf("is")
devolverá 2 en este caso. Quiero que la salida sea 10 en este caso.
Estoy usando: Apache Commons Lang: StringUtils.ordinalIndexOf ()
StringUtils.ordinalIndexOf("Java Language", "a", 2)
Puede escribir una función para devolver la matriz de posiciones de ocurrencia, Java tiene la función String.regionMatches que es bastante útil
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;
}
Utilice la versión sobrecargada de indexOf()
, que toma los indes iniciales como el segundo parámetro:
str.indexOf("is", str.indexOf("is") + 1);
int first = string.indexOf("is");
int second = string.indexOf("is", first + 1);
Esta sobrecarga comienza a buscar la subcadena del índice dado.