Tengo esta cuerda
'john smith~123 Street~Apt 4~New York~NY~12345'
Usando JavaScript, ¿cuál es la forma más rápida de analizar esto?
var name = "john smith";
var street= "123 Street";
//etc...
javascript
string-split
ctrlShiftBryan
fuente
fuente
Según ECMAScript6
ES6
, la forma limpia es la desestructuración de los arreglos:Es posible que tenga elementos adicionales en la cadena de entrada. En este caso, puede usar el operador rest para obtener una matriz para el resto o simplemente ignorarlos:
Supuse una referencia de solo lectura para los valores y utilicé la
const
declaración.¡Disfruta ES6!
fuente
const [name, , unit, ...others] = ...
Aunque esta no es la forma más simple, podría hacer esto:
Actualización para ES2015, utilizando desestructuración
fuente
keys
. La segunda función de reemplazo se usa[^~]+
para hacer coincidir cada parte diferente (es decir, '123 Street', 'Apt 4', etc.) y llama a la función para cada parte, pasándola como argumento. En cada ejecución, la función toma la primera clave del conjunto de claves (también la elimina usando Array.unshift) y asigna la clave y la parte al objeto de dirección.Querrá examinar el substr o división de JavaScript , ya que esta no es realmente una tarea adecuada para jQuery.
fuente
bueno, la forma más fácil sería algo como:
fuente
Si se encuentra Spliter, entonces solo
Dividirlo
de lo contrario, devuelve la misma cadena
fuente
Algo como:
Probablemente sea más fácil
fuente
split("~")
osplit(/~/)
nosplit("/~/")
. Este último solo se dividiría"John/~/Smith"
y no"John~Smith"
.Puedes usar
split
para dividir el texto.Como alternativa, también puede usarlo de la
match
siguiente maneraLa expresión regular
[^~]+
coincidirá con todos los caracteres excepto~
y devolverá las coincidencias en una matriz. Luego puede extraer las coincidencias de él.fuente
str.split();
no funcionaba en Firefox, pero esto funcionó tanto en Chrome como en Firefox.str.split();
funciona en Firefox y en todos los principales navegadores .Zach tenía este derecho ... usando su método también podría hacer una matriz aparentemente "multidimensional" ... Creé un ejemplo rápido en JSFiddle http://jsfiddle.net/LcnvJ/2/
fuente
JavaScript: Convertir cadena en matriz JavaScript Split
https://www.tutsmake.com/javascript-convert-string-to-array-javascript/
fuente
Esto
string.split("~")[0];
hace las cosas.fuente: String.prototype.split ()
Otro enfoque funcional utilizando el curry y la composición de funciones.
Entonces, lo primero sería la función de división. Queremos convertir esto
"john smith~123 Street~Apt 4~New York~NY~12345"
en esto["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
Entonces ahora podemos usar nuestra
splitByTilde
función especializada . Ejemplo:Para obtener el primer elemento podemos usar el
list[0]
operador. Construyamos unafirst
función:El algoritmo es: dividido por los dos puntos y luego obtener el primer elemento de la lista dada. Entonces podemos componer esas funciones para construir nuestra
getName
función final . Construyendo unacompose
función conreduce
:Y ahora usándolo para componer
splitByTilde
yfirst
funciones.fuente
Probar en Javascript simple
fuente
Dado que la pregunta de división en comas se duplica a esta pregunta, agregue esto aquí.
Si desea dividir en un personaje y también se encargan espacios en blanco extra que podrían seguir ese carácter, que a menudo se pasa por comas, puede utilizar
replace
entoncessplit
, como este:fuente
Usa este código -
fuente