2010-12-31 14 views
55

Código:Java: subcadena rango de índice

public class Test { 
    public static void main(String[] args) { 
     String str = "University"; 
     System.out.println(str.substring(4, 7)); 
    } 
} 

Salida:ers

No entiendo realmente cómo funciona el método subcadena. ¿El índice comienza en 0? Si comienzo con 0, e está en el índice 4, pero el número i está en 7, por lo que la salida sería ersi.

+4

@Nikit Es [en chino] (http://blogs.sun.com/chengfang/entry/javaee_5_api_javadoc_in)! – marcog

+0

Además, si coloca el índice de inicio como str.length(), no lanzará un excedente IndexOutofBounds. Simplemente devolverá una cadena vacía. –

Respuesta

112

0: U

1: n

2: i

3: v

4: e

5: r

6: s

7: i

8: t

9: y

índice de inicio es inclusivo

índice final es exclusiva

Javadoc link

+2

gracias, eso es exactamente lo que encontré informativo; beginIndex - el índice inicial, inclusive. endIndex - el índice final, exclusivo. –

+3

qué extraño es el método? –

+0

Solo piense en ello como una matriz de caracteres con base 0 como todas las demás matrices, y que el segundo argumento es la posición * stop * en lugar de la posición final. –

10

Ver the javadoc. Es un índice inclusivo para el primer argumento y exclusivo para el segundo.

10

Ambos están basados ​​en 0, pero el inicio es inclusivo y el final es exclusivo. Esto garantiza que la cadena resultante sea de longitud start - end. Piense en ellos como posiciones en la cuerda en lugar de personajes reales.

0 1 2 3 4 5 6 7 8 9 
u n i V E R s i t y 
     s  e 
     t  n 
     a  d 
     r 
     t 

Citando al docs:

La subcadena comienza en el especificada beginIndex y se extiende hasta el carácter en el índice endIndex - 1. Por lo tanto, , la longitud de la subcadena es endIndex-beginIndex.

2

Sí, el índice comienza en cero (0). Los dos argumentos son startIndex y endIndex, donde por la documentación:

La subcadena comienza en el beginIndex especificado y se extiende hasta el carácter del índice endIndex - 1.

Ver here para más información.

5

Como tú, no me pareció natural. Normalmente todavía tengo que recordarme que

  • la longitud de la cadena devuelta es

    lastIndex - firstIndex

  • que puede utilizar la longitud de la cadena como el lastIndex aunque no hay ningún personaje allí e intentar hacer referencia arrojaría una Excepción

tan

"University".substring(6, 10) 

devuelve la cadena de 4 caracteres "sity" a pesar de que no hay ningún carácter en la posición 10.

1

Para subcadena (startIndex, endIndex), startIndex es inclusiva y endIndex son exclusivos. StartIndex y endIndex son muy confusos. Entiendo la subcadena (startIndex, length) para recordar eso.

1

La subcadena comienza en, e incluye el carácter en la ubicación del primer número dado y va, pero no incluye el carácter en el último número dado.

0

El endIndex es un término muy confuso. Supongo que el motivo fue mantener la longitud de la nueva cadena en endIndex - startIndex. ¿Y qué? Creo que fue más fácil recordar que ambos son inclusivos, en lugar de recordar que el inicio es inclusivo y el final es exclusivo.

2
public String substring(int beginIndex, int endIndex) 

beginIndex -el índice de inicio, incluido.

endIndex -el índice final, exclusivo.

Ejemplo:

public class Test { 

    public static void main(String args[]) { 
     String Str = new String("Hello World"); 

     System.out.println(Str.substring(3, 8)); 
    } 
} 

de salida: "lo Wo"

de 3 a 7 índice.

También hay otro tipo de substring() método:

public String substring(int beginIndex) 

beginIndex -El índice inicial, ambos inclusive. Devuelve una cadena secundaria que comienza en beginIndex hasta el final de la cadena principal.

Ejemplo:

public class Test { 

    public static void main(String args[]) { 
     String Str = new String("Hello World"); 

     System.out.println(Str.substring(3)); 
    } 
} 

salida: "lo Mundial"

Del 3 al último índice.

1
public class SubstringExample 
{ 
    public static void main(String[] args) 
    { 
     String str="OOPs is a programming paradigm..."; 

     System.out.println(" Length is: " + str.length()); 

     System.out.println(" Substring is: " + str.substring(10, 30)); 
    } 
} 

Salida:

length is: 31 

Substring is: programming paradigm 
Cuestiones relacionadas