2010-01-01 17 views
63

¡Lo más travieso! el siguiente código imprime 'llo' en lugar de 'wo' esperado. obtengo resultados tan sorprendentes para algunos otros números. ¿que me estoy perdiendo aqui?javascript substring

alert('helloworld'.substring(5, 2)); 

Respuesta

93

Estás confundiendo substring() y substr(): substring() espera dos índices y no desplazamiento y la longitud. En su caso, los índices son 5 y 2, es decir, los caracteres 2..4 se devolverán ya que se excluye el índice más alto.

+7

+1 para mencionar substr. –

14

Comprobar la substringsyntax:

subcadena (de, a)

de requeridos. El índice donde inicia la extracción. El primer carácter está en el índice 0

a Opcional. El índice dónde detener la extracción. Si omite, se extrae el resto de la cadena

Te garantizo que es un poco extraño. No lo sabía yo mismo.

Lo que se quiere hacer es

alert('helloworld'.substring(5, 7)); 
2
alert('helloworld'.substring(5, 2)); 

El código anterior es incorrecto porque el primer valor es el punto de inicio hasta el final point.Eg movimiento de char 5, que es o e ir a char 2, que es el l, por lo que obtendrás llo, así que le has indicado que vaya hacia atrás.

Lo que queremos es yuou

alert('helloworld'.substring(5, 7)); 
44

Usted tiene tres opciones en Javascript:

//slice 
//syntax: string.slice(start [, stop]) 
"Good news, everyone!".slice(5,9); // extracts 'news' 

//substring 
//syntax: string.substring(start [, stop]) 
"Good news, everyone!".substring(5,9); // extracts 'news' 

//substr 
//syntax: string.substr(start [, length]) 
"Good news, everyone!".substr(5,4); // extracts 'news' 
0

Esto es lo que he hecho,

var stringValue = 'Welcome to India'; 

// if you want take get 'India' 
// stringValue.substring(startIndex, EndIndex) 
    stringValue.substring(11, 16); // O/p 'India' 
Cuestiones relacionadas