web-dev-qa-db-fra.com

sous-chaîne javascript

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

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

Vous confondez substring() et substr() : substring() s'attend à deux index et non à offset et à length. Dans votre cas, les index sont 5 et 2, c'est-à-dire que les caractères 2..4 seront renvoyés car l'index le plus élevé est exclu.

99
Christoph

Vous avez trois options 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'
45
Chirag

Vérifiez la substringsyntax :

sous-chaîne (de, à)

de Obligatoire. L'index où commencer l'extraction. 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 l'accorde, c'est un peu bizarre. Je ne le savais pas moi-même.

Ce que tu veux faire c'est

alert('helloworld'.substring(5, 7));
14
Pekka 웃

Voir la syntaxe ci-dessous:

str.substring(indexA, [indexB])

Si indexA > indexB, la fonction substring() agit comme si les arguments étaient inversés.

Considérons la documentation ici: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring

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

Le code ci-dessus est incorrect car la première valeur est le point de départ jusqu'au point final. Par exemple, déplacez-vous du caractère 5 qui est o et passez au caractère 2 qui est la l afin d'obtenir llo Donc vous lui avez dit de revenir en arrière.

Ce que tu veux c'est 

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

C'est ce que j'ai fait,

var stringValue = 'Welcome to India';

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