Wie erfasse ich eine Teilzeichenfolge vor einem bestimmten Zeichen in JavaScript?

Lesezeit: 4 Minuten

Benutzer-Avatar
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

Benutzer-Avatar
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.

    – David G

    20. August 2015 um 19:48 Uhr

  • substr wird nicht empfohlen; sollte nutzen substring stattdessen developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

    – Ben Creasy

    3. November 2019 um 1:25 Uhr

var streetaddress = addy.split(',')[0];

  • Schaukeln und Kreisverkehre – es erstellt unnötigerweise ein Array, funktioniert aber zumindest, wenn das Stoppzeichen nicht in der Zeichenfolge enthalten ist

    – Alnitak

    30. Januar 2017 um 11:28 Uhr

  • Zum Leistungsvergleich siehe: jsperf.com/street-array-vs-substr

    – Blau

    30. November 2017 um 13:17 Uhr

  • vorheriger Kommentarlink ist tot :/

    – elki42

    27. Juni 2019 um 11:13 Uhr

  • Wie von @Alnitak erwähnt, ist diese Option am besten, wenn das Stoppzeichen nicht in der Zeichenfolge enthalten ist.

    – Yannik T.

    23. März um 18:09 Uhr

Versuche dies:

streetaddress.substring(0, streetaddress.indexOf(','));

  • 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


Benutzer-Avatar
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.

Wer es kurz mag, verwendet einfach a RegExp:

var streetAddress = /[^,]*/.exec(addy)[0];

  • +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

    – miile7

    30. November 2021 um 9:41 Uhr

Sie können auch verwenden shift().

var streetaddress = addy.split(',').shift();

Laut MDN Web Docs:

Das shift() Methode entfernt die Erste Element aus einem Array und gibt das entfernte Element zurück. Diese Methode ändert die Länge des Arrays.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

  • Indizieren mit [0] ist effizienter als die Verwendung von .shift()

    – Mysteriöser Pfannkuchen

    5. Oktober 2018 um 0:11 Uhr

1315240cookie-checkWie erfasse ich eine Teilzeichenfolge vor einem bestimmten Zeichen in JavaScript?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy