Eu tenho essa string
'john smith~123 Street~Apt 4~New York~NY~12345'
Usando JavaScript, qual é a maneira mais rápida de analisar isso
var name = "john smith";
var street= "123 Street";
//etc...
javascript
string-split
ctrlShiftBryan
fonte
fonte
De acordo com o ECMAScript6
ES6
, o caminho limpo é a destruição de matrizes:Você pode ter itens extras na string de entrada. Nesse caso, você pode usar o operador rest para obter uma matriz para o resto ou apenas ignorá-los:
Supus uma referência somente leitura para valores e usei a
const
declaração.Aproveite o ES6!
fonte
const [name, , unit, ...others] = ...
Mesmo que essa não seja a maneira mais simples, você pode fazer o seguinte:
Atualização para ES2015, usando a desestruturação
fonte
keys
. A segunda função de substituição está sendo usada[^~]+
para combinar cada parte diferente (por exemplo, '123 Street', 'Apt 4', etc.) e chama a função para cada parte, passando-a como argumento. A cada execução, a função pega a primeira chave da matriz de chaves (também a remove usando Array.unshift) e atribui a chave e a parte ao objeto de endereço.Você deseja examinar o substr ou a divisão do JavaScript , pois essa não é realmente uma tarefa adequada para o jQuery.
fonte
bem, a maneira mais fácil seria algo como:
fonte
Se Spliter for encontrado , apenas
Dividi-lo
caso contrário, retorne a mesma string
fonte
Algo como:
Provavelmente será mais fácil
fonte
split("~")
ousplit(/~/)
nãosplit("/~/")
. Este último só se dividiria"John/~/Smith"
e não"John~Smith"
.Você pode usar
split
para dividir o texto.Como alternativa, você também pode usar
match
como segueO regex
[^~]+
corresponderá a todos os caracteres, exceto~
e retornará as correspondências em uma matriz. Você pode extrair as correspondências dele.fonte
str.split();
não estava funcionando no Firefox, mas funcionou no Chrome e no Firefox.str.split();
funciona no Firefox e em todos os principais navegadores .Zach tinha esse direito. Usando seu método, você também pode criar uma matriz aparentemente "multidimensional". Criei um exemplo rápido no JSFiddle http://jsfiddle.net/LcnvJ/2/
fonte
JavaScript: Converter string em array JavaScript Split
https://www.tutsmake.com/javascript-convert-string-to-array-javascript/
fonte
Isso
string.split("~")[0];
faz as coisas.fonte: String.prototype.split ()
Outra abordagem funcional usando curry e composição funcional.
Portanto, a primeira coisa seria a função de divisão. Queremos fazer
"john smith~123 Street~Apt 4~New York~NY~12345"
disso["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
Então agora podemos usar nossa
splitByTilde
função especializada . Exemplo:Para obter o primeiro elemento, podemos usar o
list[0]
operador Vamos construir umafirst
função:O algoritmo é: dividido pelos dois pontos e, em seguida, obtenha o primeiro elemento da lista fornecida. Assim, podemos compor essas funções para construir nossa
getName
função final . Construindo umacompose
função comreduce
:E agora usá-lo para compor
splitByTilde
efirst
funções.fonte
Experimente em Javascript simples
fonte
Como a questão da divisão entre vírgulas é duplicada, adicione-a aqui.
Se você deseja dividir um caractere e também manipular espaços em branco extras que possam seguir esse caractere, o que geralmente acontece com vírgulas, você pode usá
replace
-split
lo da seguinte maneira:fonte
Use este código -
fonte