Javascript-Teilzeichenfolge


73

das Darndeste! Der folgende Code gibt 'llo' anstelle des erwarteten 'wo' aus. Ich bekomme so überraschende Ergebnisse für ein paar andere Zahlen. Was vermisse ich hier?

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

Antworten:


103

Sie sind verwirrend substring()und substr(): substring()erwartet zwei Indizes und nicht Offset und Länge. In Ihrem Fall sind die Indizes 5 und 2, dh die Zeichen 2..4 werden zurückgegeben, da der höhere Index ausgeschlossen ist.


Die zweite Antwort ist besser; es hat Beispiele
Nathan

54

Sie haben drei Möglichkeiten in 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'

16

Überprüfen Sie die substring Syntax :

Teilzeichenfolge (von, bis)

von Erforderlich. Der Index, in dem die Extraktion gestartet werden soll. Das erste Zeichen befindet sich am Index 0

zu Optional. Der Index, in dem die Extraktion gestoppt werden soll . Wenn nicht angegeben, wird der Rest der Zeichenfolge extrahiert

Ich gebe dir zu, es ist ein bisschen seltsam. Wusste das selbst nicht.

Was Sie tun möchten, ist

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

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

Der obige Code ist falsch , weil der erste Wert der Startpunkt bis zum Ende point.Eg Umzug von char ist 5 , das ist ound geht 2 verkohlen , das das ist lso erhalten , llodamit Sie ihm gesagt haben , rückwärts zu gehen.

Was du willst ist

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


0

Das habe ich getan ...

var stringValue = 'Welcome to India';

// if you want take get 'India' 
// stringValue.substring(startIndex, EndIndex)
   stringValue.substring(11, 16); // O/p 'India'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.