2010-01-01 4 views
63

la chose la plus darndest! le code suivant imprime 'llo' au lieu du 'wo' attendu. J'obtiens des résultats aussi surprenants pour quelques autres chiffres. Qu'est-ce que j'oublie ici?javascript substring

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

Répondre

93

Vous confondez substring() et substr(): substring() deux indices et attend pas offset et longueur. Dans votre cas, les indices sont 5 et 2, c'est-à-dire que les caractères 2..4 seront renvoyés car l'indice supérieur est exclu.

+7

+1 pour mentionner substr. –

14

Vérifiez la substringsyntax:

substring (de, à)

de requis. L'index où commence l'extraction. Le premier caractère est à l'index 0

à Facultatif. L'index où arrêter l'extraction. Si omis, il extrait le reste de la chaîne

Je vous accorderai c'est un peu bizarre. Je ne le savais pas moi-même.

Qu'est-ce que vous voulez faire est

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

Le code ci-dessus est erroné parce que la première valeur est le point de départ à la fin point.Eg mouvement de char 5 qui est o et aller char 2 qui est le l donc obtiendra llo Donc, vous l'avez dit de revenir en arrière.

Qu'est-ce que yuou veulent est

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

Vous avez trois options: 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

ce que je l'ai fait,

var stringValue = 'Welcome to India'; 

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