Nie otrzymałem zoptymalizowanego wyrażenia regularnego, które podzieliło łańcuch String na podstawie pierwszego wystąpienia białej spacji:
var str="72 tocirah sneab";
Potrzebuję:
[
"72",
"tocirah sneab",
]
javascript
regex
Luca
źródło
źródło
Odpowiedzi:
Jeśli zależy Ci tylko na znaku spacji (a nie na tabulatorach lub innych białych znakach) i zależy Ci tylko na wszystkim przed pierwszą spacją i wszystkim po pierwszej spacji, możesz to zrobić bez wyrażenia regularnego, takiego jak to:
Zauważ, że jeśli w ogóle nie ma spacji, pierwsza linia zwróci pusty ciąg, a druga zwróci cały ciąg. Upewnij się, że jest to zachowanie, którego chcesz w tej sytuacji (lub że taka sytuacja nie nastąpi).
źródło
Javascript nie obsługuje lookbehind, więc
split
nie jest to możliwe.match
Pracuje:Kolejna sztuczka:
Co powiesz na:
czemu nie
albo może
Aktualizacja 2019 : od ES2018 obsługiwane są lookbehinds:
źródło
str.match(/^(\S+)\s(.*)/).slice(1)
nie zadziała dla łańcucha, który nie ma spacjiW ES6 możesz też
źródło
Wiem, że gra jest spóźniona, ale wydaje się, że jest na to bardzo prosty sposób:
To pozostawi
arr[0]
z"72"
iarr[1]
z"tocirah sneab"
. Zauważ, że arr [2] będzie pusty, ale możesz go po prostu zignorować.Na przykład:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split#Capturing_parentheses
źródło
ale nadal uważam, że istnieje szybszy sposób.
źródło
Rozwiązanie Georga jest fajne, ale psuje się, jeśli łańcuch nie zawiera żadnych białych znaków. Jeśli twoje łańcuchy mogą nie zawierać białych znaków, bezpieczniej jest użyć .split i przechwytywania grup, takich jak:
źródło
Możesz także użyć .replace, aby zamienić tylko pierwsze wystąpienie,
Pomijając / g.
PRÓBNY
źródło
Po prostu podziel sznurek na tablicę i sklej ze sobą potrzebne części. Takie podejście jest bardzo elastyczne, sprawdza się w wielu sytuacjach i łatwo się nad nim zastanawiać. Dodatkowo potrzebujesz tylko jednego wywołania funkcji.
Alternatywnie, jeśli chcesz wybrać coś, czego potrzebujesz bezpośrednio ze sznurka, możesz zrobić coś takiego:
Lub tak:
Jednak proponuję pierwszy przykład.
Działające demo: jsbin
źródło
Ilekroć potrzebuję pobrać klasę z listy klas lub części nazwy klasy lub identyfikatora, zawsze używam metody split (), a następnie pobieram ją specjalnie z indeksem tablicy lub, najczęściej w moim przypadku, pop (), aby uzyskać ostatni element lub shift (), aby uzyskać pierwszy.
Ten przykład pobiera klasy div „gallery_148 ui-sortable” i zwraca identyfikator galerii 148.
Jestem pewien, że można by go skompresować do mniejszej liczby wierszy, ale zostawiłem go rozszerzony dla większej czytelności.
źródło
Potrzebowałem nieco innego wyniku.
Chciałem pierwszego słowa i tego, co po nim przyszło - nawet jeśli było puste.
więc jeśli dane wejściowe to
oneword
otrzymaszoneword
i''
.Jeśli dane wejściowe to
one word and some more
otrzymaszone
iword and some more
.źródło
Nie jestem pewien, dlaczego wszystkie inne odpowiedzi są tak skomplikowane, skoro można to wszystko zrobić w jednej linii, radząc sobie również z brakiem miejsca.
Jako przykład weźmy pierwszy i „pozostałe” składniki nazwy:
źródło
Następująca funkcja zawsze podzieli zdanie na 2 elementy. Pierwszy element będzie zawierał tylko pierwsze słowo, a drugi element będzie zawierał wszystkie pozostałe słowa (lub będzie to pusty ciąg).
źródło