Wie erfasse ich eine Teilzeichenfolge vor einem bestimmten Zeichen in JavaScript?
Lesezeit: 4 Minuten
Anjana Scharma
Ich versuche, alles vor dem ‘,’ Komma zu extrahieren. Wie mache ich das in JavaScript oder jQuery? Ich habe es versucht und es funktioniert nicht..
1345 albany street, Bellevue WA 42344
Ich möchte nur die Straßenadresse holen.
var streetaddress= substr(addy, 0, index(addy, '.'));
addy.split(',', 1)[0]
– Antak
8. August 2014 um 5:37 Uhr
woher
var streetaddress = addy.substr(0, addy.indexOf(','));
Es ist zwar nicht der beste Ort für endgültige Informationen darüber, was jede Methode tut (Mozilla-Entwicklernetzwerk ist dafür besser) w3schools.com ist gut, um Sie in die Syntax einzuführen.
Dies funktioniert nicht, wenn die gesuchte Zeichenfolge keine Instanz des Suchzeichens enthält. Es wird eine leere Zeichenfolge zurückgegeben.
Schaukeln und Kreisverkehre – es erstellt unnötigerweise ein Array, funktioniert aber zumindest, wenn das Stoppzeichen nicht in der Zeichenfolge enthalten ist
Warum keine Liebe für meine Antwort? Wenn diese Antwort richtig ist, ist stackoverflow.com/questions/3745515/… meine Antwort so genau wie die akzeptierte Antwort und funktioniert für andere Startindizes als 0.
– Mikey G
5. August 2015 um 20:53 Uhr
Wie von David G oben erwähnt, möglicherweise weil es nicht funktioniert, wenn kein Komma vorhanden ist. Das OP hat möglicherweise impliziert, dass die Zeichenfolge immer ein Komma enthalten würde, aber in vielen Fällen ist das Trennzeichen nicht garantiert. Sehen jsfiddle.net/13pkp1xn
– Bumpious Q Bangwhistle
23. Januar 2017 um 10:51 Uhr
Miles Florenz
//split string into an array and grab the first item
var streetaddress = addy.split(',')[0];
Außerdem würde ich empfehlen, Ihre Variablen zur besseren Lesbarkeit mit camel-case(streetAddress) zu benennen.
+1, ich denke, das ist eine vernünftige Methode, aber ich habe einen Hinweis daraus genommen und bin mitgegangen addy.split(',', 1)[0]
– Antak
8. August 2014 um 5:39 Uhr
Diese Methode ist zum Beispiel sehr nett, wenn Sie auf Leerzeichen aufteilen möchten: /[^\s]*/.exec(…)
– NuSkooler
1. August 2015 um 18:08 Uhr
Wenn der Teilstring zum Entfernen nicht unbedingt vorhanden ist: streetAddress = addy.replace(/,.*$/, '');dies entfernt alles nach der ersten Übereinstimmung (von ,) nur wenn vorhanden
– miile7
30. November 2021 um 9:41 Uhr
fast dasselbe wie die Antwort von David G, aber ohne die anonyme Funktion, wenn Sie keine Lust haben, eine hinzuzufügen.
s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));
in diesem Fall nutzen wir die Tatsache, dass das zweite Argument von substr eine Länge ist und wir wissen, dass unser Teilstring bei 0 beginnt.
Die Top-Antwort ist keine generische Lösung wegen des unerwünschten Verhaltens, wenn der String das gesuchte Zeichen nicht enthält.
Wenn Sie in einem allgemeinen Fall ein korrektes Verhalten wünschen, verwenden Sie diese Methode oder die Methode von David G, nicht die oberste Antwort
Regex- und Split-Methoden funktionieren auch, sind aber für dieses spezielle Problem möglicherweise etwas langsamer / übertrieben.
+1, ich denke, das ist eine vernünftige Methode, aber ich habe einen Hinweis daraus genommen und bin mitgegangen addy.split(',', 1)[0]
– Antak
8. August 2014 um 5:39 Uhr
Diese Methode ist zum Beispiel sehr nett, wenn Sie auf Leerzeichen aufteilen möchten: /[^\s]*/.exec(…)
– NuSkooler
1. August 2015 um 18:08 Uhr
Wenn der Teilstring zum Entfernen nicht unbedingt vorhanden ist: streetAddress = addy.replace(/,.*$/, '');dies entfernt alles nach der ersten Übereinstimmung (von ,) nur wenn vorhanden
addy.split(',', 1)[0]
– Antak
8. August 2014 um 5:37 Uhr