Der schnellste Weg, um Bindestriche aus einer Zeichenfolge zu entfernen

Lesezeit: 3 Minuten

Benutzer-Avatar
sowa

Ich habe IDs, die so aussehen: 185-51-671 aber sie können auch Buchstaben am Ende haben, 175-1-7b

Ich möchte nur die Bindestriche als Vorverarbeitungsschritt entfernen. Zeigen Sie mir einige coole Möglichkeiten, dies in Javascript zu tun? Ich denke, es gibt wahrscheinlich einige Fragen wie diese, aber ich bin gespannt, welche Optimierungen die Leute für “nur Bindestriche” finden werden.

Vielen Dank!

Bearbeiten: Ich verwende jQuery, also denke ich, dass .replace(a,b) den Trick macht (ersetzt a durch b)

numberNoHyphens = number.replace("-","");

noch andere alternativen?

edit #2:

Also, nur für den Fall, dass sich jemand fragt, die richtige Antwort war

numberNoHyphens = number.replace(/-/g,"");

und Sie brauchen das “g”, das der Musterschalter oder das “globale Flag” ist, weil

numberNoHyphens = number.replace(/-/,"");

passt nur den ersten Bindestrich an und ersetzt ihn

  • Sie müssen den Titel Ihrer Frage nicht mit kommentieren [solved] – Dies wird impliziert, indem Sie die Antwort, die Ihr Problem gelöst hat, mit einem grünen Häkchen versehen. Fragen mit akzeptierten Antworten unterscheiden sich auf StackOverflow visuell von Fragen ohne akzeptierte Antwort.

    – Matt

    1. Juni 2011 um 17:59 Uhr


Benutzer-Avatar
Jakob Hill

Sie müssen einschließen die Weltflagge:

var str="185-51-671";
var newStr = str.replace(/-/g, "");

  • Gibt es eine Möglichkeit, nur die Bindestriche am Anfang der Zeichenfolge zu kürzen und die in der Mitte der Zeichenfolge zu belassen? also würde ‘–this-is-a-string’ zu ‘this-is-a-string’ werden

    – abirne85

    4. Oktober 2018 um 10:46 Uhr

  • @abyrne85, ja, es gibt einen Weg, aber am besten wäre es, wenn du eine neue Frage stellst.

    – James Hügel

    4. Oktober 2018 um 11:03 Uhr

  • Dies gibt mir einen Fehler in meiner IDE: expected expression, found `/`

    – Jim

    19. Februar um 23:52 Uhr


  • So entfernen Sie die Bindestriche am Anfang der Zeichenfolge: var str = '--- te - st end -'; str = str.replace(/^-+/g, '');. Dann .trim(), um auch Leerzeichen zu entfernen. Oder verwenden Sie diese Regex: str = str.replace(/^(-|\s+)+/g, '');

    – Benutzerbild

    9. Juli um 5:54


  • @Avatar keines der von Ihnen bereitgestellten Beispiele funktioniert wie vom OP angefordert. Ich schlage vor, anstatt eine neue Antwort in den Kommentaren zu erstellen, dass Sie tatsächlich eine neue Antwort erstellen sollten … dann können wir sie ablehnen 🙂

    – James Hügel

    21. Juli um 10:01 Uhr


Das ist nicht schneller, aber

str.split('-').join('');

sollte auch funktionieren.

Ich habe einen jsperf-Test eingerichtet, wenn jemand seine Methoden hinzufügen und vergleichen möchte, aber es ist unwahrscheinlich, dass irgendetwas schneller als der ist replace Methode.

http://jsperf.com/remove-hyphens-from-string

Benutzer-Avatar
Trey

var str="185-51-671";
str=str.replace(/-/g,'');

  • … und es scheint, als hätten Sie beide (Sie und CrisDeBlonde) diese Frage genau im selben Moment beantwortet, haha

    – Sowa

    1. Juni 2011 um 16:59 Uhr

Benutzer-Avatar
Penny Liu

Kommt viel leichter rein String.prototype.replaceAll(). Überprüfen Sie die Browserunterstützung für die eingebaute Methode.

const str="185-51-671";
console.log(str.replaceAll('-', ''));

Benutzer-Avatar
Doug Chamberlain

Bei einigen dieser Antworten wurden vor der Bearbeitung nicht alle Bindestriche entfernt. Sie müssten verwenden .replaceAll("-","")

  • Es gibt kein replaceAll() -Methode, die für das String-Objekt oder seinen Prototyp definiert ist. Sehen: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

    – Rob Johansen

    10. März 2017 um 2:49 Uhr

  • @RobJohansen es ist ein Jahrzehnt her. aber ich denke, es ist jetzt in jedem Browser außer IE. hat lange genug gedauert. lese ich das Browserdiagramm richtig?

    – Doug Chamberlain

    22. September 2021 um 14:35 Uhr

Benutzer-Avatar
gmc

In Tidyverse gibt es mehrere Funktionen, die Ihren Anforderungen entsprechen könnten. Konkret würde ich verwenden str_removedas in einer Zeichenfolge das Geberzeichen durch eine leere Zeichenfolge (“”) ersetzt und es effektiv entfernt (Überprüfen Sie hier die Dokumentation). Beispiel für seine Verwendung:

str_remove(x, '-') 

  • Es gibt kein replaceAll() -Methode, die für das String-Objekt oder seinen Prototyp definiert ist. Sehen: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

    – Rob Johansen

    10. März 2017 um 2:49 Uhr

  • @RobJohansen es ist ein Jahrzehnt her. aber ich denke, es ist jetzt in jedem Browser außer IE. hat lange genug gedauert. lese ich das Browserdiagramm richtig?

    – Doug Chamberlain

    22. September 2021 um 14:35 Uhr

1144680cookie-checkDer schnellste Weg, um Bindestriche aus einer Zeichenfolge zu entfernen

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

Privacy policy