Holen Sie sich alles nach dem Bindestrich in eine Zeichenfolge in Javascript


149

Was wäre der sauberste Weg, dies zu tun, der sowohl im IE als auch in Firefox funktioniert?

Meine Zeichenfolge sieht folgendermaßen aus: Sometext-20202

Jetzt können der 'Sometext' und die Ganzzahl nach dem Bindestrich unterschiedlich lang sein.

Sollte ich nur Teilzeichenfolge und Index von oder ist die andere Möglichkeit?

Antworten:


279

Wie würde ich das machen:

// function you can use:
function getSecondPart(str) {
    return str.split('-')[1];
}
// use the function:
alert(getSecondPart("sometext-20202"));

62
Ist es nicht erwähnenswert, dass diese Funktion nicht funktioniert, wenn der String ist sometext-20202-303?
Istiaque Ahmed

17
@IstiaqueAhmed wäre es, wenn die Frage nicht speziell über ein ganz bestimmtes Format wäre: "Meine Zeichenfolge sieht so aus: Sometext-20202"
Artlung

7
Die Frage hatte, get everything after the dash in a string in javascriptwas in diesem Fall scheitern würde.
Artem Kalinchuk

108

Eine Lösung, die ich bevorzuge, wäre:

const str = 'sometext-20202';
const slug = str.split('-').pop();

Wo slugwäre dein Ergebnis?


1
Diese Lösung ist die beste, wenn Sie mit mehreren Trennzeichen arbeiten.
Ethan Keiley

26
var the_string = "sometext-20202";
var parts = the_string.split('-', 2);

// After calling split(), 'parts' is an array with two elements:
// parts[0] is 'sometext'
// parts[1] is '20202'

var the_text = parts[0];
var the_num  = parts[1];

24
var testStr = "sometext-20202"
var splitStr = testStr.substring(testStr.indexOf('-') + 1);

6

AFAIK, beide substring()und indexOf()werden sowohl von Mozilla als auch von IE unterstützt. Beachten Sie jedoch, dass substr () in früheren Versionen einiger Browser (insbesondere Netscape / Opera) möglicherweise nicht unterstützt wird.

Ihr Beitrag zeigt an, dass Sie bereits wissen, wie es geht, substring()und indexOf()daher veröffentliche ich kein Codebeispiel.


Dies ist je nach Anwendung eine bessere Lösung als Split. Wenn Sie mehr als eine haben, kann dies zu unerwünschten Konsequenzen führen.
Trevorgrayson

20
string.substring (string.indexOf ('-') + 1)
trevorgrayson

indexOf ist in IE8 und darunter nicht vorhanden, obwohl Polyfills vorhanden sind.
Erik Honn

3

Sie können dies mit der integrierten RegExp (Muster [, Flags]) Factory Notation in js wie folgt tun:

RegExp(/-(.*)/).exec("sometext-20202")[1]

In der obigen Code-Exec-Funktion wird ein Array mit zwei Elementen (["-20202", "20202"]) zurückgegeben, eines mit Bindestrich (-20202) und eines ohne Bindestrich (20202). Wählen Sie das zweite Element (Index 1).



0

Verwenden Sie einen regulären Ausdruck der Form: \ w- \ d + wobei a \ w ein Wort und \ d eine Ziffer darstellt. Sie werden nicht sofort funktionieren, also spielen Sie herum. Versuchen Sie dies .

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.