Mam ten ciąg
'john smith~123 Street~Apt 4~New York~NY~12345'
Przy użyciu JavaScript, jaki jest najszybszy sposób na przetworzenie tego
var name = "john smith";
var street= "123 Street";
//etc...
javascript
string-split
ctrlShiftBryan
źródło
źródło
Według ECMAScript6
ES6
czystym sposobem są tablice destrukcyjne:Możesz mieć dodatkowe elementy w ciągu wejściowym. W takim przypadku możesz użyć operatora rest, aby uzyskać tablicę dla reszty lub po prostu je zignorować:
Przypuszczałem, że wartości odnoszą się tylko do odczytu i użyłem
const
deklaracji.Ciesz się ES6!
źródło
const [name, , unit, ...others] = ...
Chociaż nie jest to najprostszy sposób, możesz to zrobić:
Aktualizacja dla ES2015 z wykorzystaniem destrukcji
źródło
keys
. Druga funkcja zamiany służy[^~]+
do dopasowania każdej innej części (tj. „123 Street”, „Apt 4” itp.) I wywołuje funkcję dla każdej części, przekazując ją jako argument. Przy każdym uruchomieniu funkcja pobiera pierwszy klucz z tablicy klawiszy (usuwając go również za pomocą Array.unshift) i przypisuje klucz i część do obiektu adresu.Będziemy chcieli, aby spojrzeć na funkcje Javascript jest substr lub rozłamu , gdyż nie jest to zadanie nadaje się do jQuery.
źródło
najłatwiejszym sposobem byłoby coś takiego:
źródło
Jeśli znaleziono Spliter, to tylko
Podziel To
w przeciwnym razie zwróci ten sam ciąg
źródło
Coś jak:
Prawdopodobnie będzie najłatwiej
źródło
split("~")
czysplit(/~/)
jednak niesplit("/~/")
. Ten ostatni podzieliłby się tylko"John/~/Smith"
i nie"John~Smith"
.Możesz użyć
split
do podziału tekstu.Alternatywnie możesz użyć również
match
w następujący sposóbWyrażenie regularne
[^~]+
dopasuje wszystkie znaki z wyjątkiem~
i zwróci dopasowania w tablicy. Następnie możesz wyodrębnić z niego dopasowania.źródło
str.split();
nie działał w Firefoksie, ale działało to zarówno w Chrome, jak i Firefox.str.split();
działa w przeglądarce Firefox i we wszystkich głównych przeglądarkach .Zach miał to jedno prawo… używając jego metody można również stworzyć pozornie „wielowymiarową” tablicę. Stworzyłem szybki przykład na JSFiddle http://jsfiddle.net/LcnvJ/2/
źródło
JavaScript: Konwertuj ciąg na tablicę JavaScript Split Split
https://www.tutsmake.com/javascript-convert-string-to-array-javascript/
źródło
To
string.split("~")[0];
załatwia sprawę.źródło: String.prototype.split ()
Kolejne funkcjonalne podejście z wykorzystaniem curry i kompozycji funkcji.
Pierwszą rzeczą będzie funkcja podziału. Chcemy to
"john smith~123 Street~Apt 4~New York~NY~12345"
w to włączyć["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
Teraz możemy skorzystać z naszej specjalistycznej
splitByTilde
funkcji. Przykład:Aby uzyskać pierwszy element, możemy użyć
list[0]
operatora. Zbudujmyfirst
funkcję:Algorytm jest: podzielony przez dwukropek, a następnie pobierz pierwszy element z podanej listy. Możemy więc skomponować te funkcje, aby zbudować naszą ostateczną
getName
funkcję. Budowaniecompose
funkcji za pomocąreduce
:A teraz używa go do komponowania
splitByTilde
ifirst
funkcji.źródło
Spróbuj w zwykłym Javascript
źródło
Ponieważ pytanie dotyczące przecinków jest duplikowane w tym pytaniu, dodając to tutaj.
Jeśli chcesz podzielić na charakter i również obsługiwać dodatkowe spacje, które mogłyby wynikać, że charakter, który często bywa z przecinkami, można użyć
replace
wtedysplit
, jak poniżej:źródło
Użyj tego kodu -
źródło