Ich habe keinen optimierten regulären Ausdruck erhalten, der mich in einen String aufteilt, der auf dem ersten Leerraum basiert:
var str="72 tocirah sneab";
Ich benötige:
[
"72",
"tocirah sneab",
]
javascript
regex
Luca
quelle
quelle
Antworten:
Wenn Sie sich nur um das Leerzeichen (und nicht um Tabulatoren oder andere Leerzeichen) kümmern und sich nur um alles vor dem ersten Leerzeichen und alles nach dem ersten Leerzeichen kümmern, können Sie dies ohne einen regulären Ausdruck wie diesen tun:
Beachten Sie, dass in der ersten Zeile eine leere Zeichenfolge und in der zweiten Zeile die gesamte Zeichenfolge zurückgegeben wird, wenn überhaupt kein Leerzeichen vorhanden ist. Stellen Sie sicher, dass dies das Verhalten ist, das Sie in dieser Situation wünschen (oder dass diese Situation nicht auftritt).
quelle
Javascript unterstützt keine Lookbehinds,
split
ist also nicht möglich.match
funktioniert:Ein weiterer Trick:
wie wäre es mit:
und warum nicht
oder vielleicht
Update 2019 : Ab ES2018 werden Lookbehinds unterstützt:
quelle
str.match(/^(\S+)\s(.*)/).slice(1)
funktioniert nicht für eine Zeichenfolge, die keinen Platz hatIn ES6 können Sie auch
quelle
Ich weiß, dass ich zu spät zum Spiel komme, aber es scheint einen sehr einfachen Weg zu geben, dies zu tun:
Dies wird
arr[0]
mit"72"
undarr[1]
mit verlassen"tocirah sneab"
. Beachten Sie, dass arr [2] leer ist, Sie es jedoch einfach ignorieren können.Als Referenz:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split#Capturing_parentheses
quelle
aber ich denke immer noch, dass es einen schnelleren Weg gibt.
quelle
Georgs Lösung ist nett, bricht aber, wenn die Zeichenfolge kein Leerzeichen enthält. Wenn Ihre Zeichenfolgen möglicherweise keine Leerzeichen enthalten, ist es sicherer, .split zu verwenden und Gruppen wie folgt zu erfassen:
quelle
Sie können .replace auch verwenden, um nur das erste Vorkommen zu ersetzen.
Das / g weglassen.
DEMO
quelle
Teilen Sie einfach die Zeichenfolge in ein Array und kleben Sie die benötigten Teile zusammen. Dieser Ansatz ist sehr flexibel, funktioniert in vielen Situationen und ist leicht zu überlegen. Außerdem benötigen Sie nur einen Funktionsaufruf.
Alternativ können Sie Folgendes tun, wenn Sie direkt aus der Zeichenfolge auswählen möchten, was Sie benötigen:
Oder so:
Ich schlage jedoch das erste Beispiel vor.
Arbeitsdemo : jsbin
quelle
Wenn ich eine Klasse aus einer Liste von Klassen oder einem Teil eines Klassennamens oder einer ID abrufen muss, verwende ich immer split () und erhalte sie dann entweder speziell mit dem Array-Index oder, in meinem Fall meistens, mit pop () das letzte Element oder shift (), um das erste zu erhalten.
In diesem Beispiel werden die Klassen des div "gallery_148 ui-sortable" abgerufen und die Galerie-ID 148 zurückgegeben.
Ich bin sicher, dass es in weniger Zeilen komprimiert werden könnte, aber ich habe es zur besseren Lesbarkeit erweitert gelassen.
quelle
Ich brauchte ein etwas anderes Ergebnis.
Ich wollte das erste Wort und was auch immer danach kam - auch wenn es leer war.
Also, wenn die Eingabe ist, erhalten
oneword
Sieoneword
und''
.Wenn die Eingabe ist, erhalten
one word and some more
Sieone
undword and some more
.quelle
Ich bin mir nicht sicher, warum alle anderen Antworten so kompliziert sind, wenn Sie alles in einer Zeile erledigen können und auch den Platzmangel bewältigen.
Lassen Sie uns als Beispiel die erste und "andere" Komponente eines Namens erhalten:
quelle
Die folgende Funktion wird immer geteilt , den Satz in 2 Elemente. Das erste Element enthält nur das erste Wort und das zweite Element enthält alle anderen Wörter (oder es ist eine leere Zeichenfolge).
quelle