it-swarm.com.de

Das letzte Element eines Split-String-Arrays abrufen

Ich muss das letzte Element eines Split-Arrays mit mehreren Trennzeichen erhalten. Die Trennzeichen sind Kommas und Leerzeichen. Wenn keine Trennzeichen vorhanden sind, sollte die ursprüngliche Zeichenfolge zurückgegeben werden.

Wenn die Zeichenfolge "Wie, machst du heute?" es sollte "heute zurückkehren"

Wenn die Eingabe "Hallo" war, sollte die Ausgabe "Hallo" sein.

Wie mache ich das in JavaScript?

134
sol
var str = "hello,how,are,you,today?";
var pieces = str.split(/[\s,]+/);

An diesem Punkt ist pieces ein Array und pieces.length enthält die Größe des Arrays. Um das letzte Element des Arrays abzurufen, überprüfen Sie pieces[pieces.length-1]. Wenn es keine Kommas oder Leerzeichen gibt, wird die Zeichenfolge einfach so ausgegeben, wie sie angegeben wurde.

alert(pieces[pieces.length-1]); // alerts "today?"
90

Es gibt einen Einliner für alles. :)

var output = input.split(/[, ]+/).pop();
639
Guffa
var item = "one,two";
var lastItem = item.split(",").pop(-1);

Funktioniert das nicht?

41
mohawke

Sie können auch das Array umkehren und das erste Element übernehmen. Auf diese Weise müssen Sie die Länge nicht kennen, aber es bringt keine echten Vorteile und den Nachteil, dass der umgekehrte Vorgang bei großen Arrays länger dauern kann:

array1.split(",").reverse()[0]

Es ist zwar einfach, ändert aber auch das fragliche Originalarray. Das könnte ein Problem sein oder nicht.

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

Möglicherweise möchten Sie dies jedoch verwenden:

array1.split(",").pop()
3
Smile4ever

Und wenn Sie kein Array erstellen wollen ...

var str = "how,are you doing, today?";
var res = str.replace(/(.*)([, ])([^, ]*$)/,"$3");

Die Aufschlüsselung in Englisch ist:

/(anything)(any separator once)(anything that isn't a separator 0 or more times)/

Das Ersetzen sagt nur, dass die gesamte Zeichenfolge durch das Zeug nach dem letzten Trennzeichen ersetzt wird.

So können Sie sehen, wie dies allgemein angewendet werden kann. Beachten Sie, dass die ursprüngliche Zeichenfolge nicht geändert wird.

3
Tony
array.split(' ').slice(-1)[0]

Der beste aller Zeiten und mein Favorit.

2
jithil

Sie können direkt auf den Array-Index zugreifen:

var csv = 'zero,one,two,three'; csv.split(',')[0]; //result: zero csv.split(',')[3]; //result: three

1
tnong
var title = 'fdfdsg dsgdfh dgdh dsgdh tyu hjuk yjuk uyk hjg fhjg hjj tytutdfsf sdgsdg dsfsdgvf dfgfdhdn dfgilkj,n, jhk jsu wheiu sjldsf dfdsf hfdkdjf dfhdfkd hsfd ,dsfk dfjdf ,yier djsgyi kds';
var shortText = $.trim(title).substring(1000, 150).split(" ").slice(0, -1).join(" ") + "...More >>";
0
user7425063