índice de la cadena de excepción ligada al encontrar subcadena en Java

Aashish Sethi:

En este código que estoy tratando de encontrar el personaje (sólo 1) antes y después de la cadena str1 en la cadena str utilizando Java

public static void main(String[] args) {
    String str = "abcXY123XYijk";
    String str1 = "XY";

    int[] arr = new int[str.length()];

    for(int i=0;i<str.length()-2;i++){
        if( "XY".equals(str.substring(i,2))){

            int index=str.indexOf("XY");

            System.out.println(String.valueOf(str.charAt(index-1))+String.valueOf(str.charAt(index+str1.length())));
        }
    }
}
Azro:

El error exacto es StringIndexOutOfBoundsException: begin 3, end 2, length 13, te dice que se intenta obtener una subcadena que comienza en el índice 3y termina en el índice 2, el segundo parámetro no es la longitud, pero al final, por lo que su usoi+2

También str.indexOf("XY")devuelve el primer índice, por lo que siempre obtendrá el mismo resultado, a fin de utilizar str.indexOf("XY", i)el segundo parámetro es el índice de la cadena desde la que iniciar la búsqueda

for (int i = 0; i < str.length() - 3; i++) {
    if ("XY".equals(str.substring(i, i + 2))) {
        int index = str.indexOf("XY", i);
        System.out.println("" + str.charAt(index-1) + str.charAt(index + str1.length()));
    }
}

// Outputs
c1
3i

Ahora mejor

Como se comprueba que entre i,i+2usted tiene XY , utilizar el índice ide hacer llegar los caracteres anteriores y siguientes, sin necesidad de buscar el índice de nuevo, también sustituir la 2por la longitud de la variable que almacenaXY

String find = "XY";
for (int i = 0; i < str.length() - 3; i++) {
    if (find.equals(str.substring(i, i + find.length()))) {
        System.out.println("" + str.charAt(i - 1) + str.charAt(i + find.length()));
    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=349245&siteId=1
Recomendado
Clasificación