J'ai cette chaîne
'john smith~123 Street~Apt 4~New York~NY~12345'
En utilisant JavaScript, quel est le moyen le plus rapide d'analyser cela en
var name = "john smith";
var street= "123 Street";
//etc...
javascript
string-split
ctrlShiftBryan
la source
la source
Selon ECMAScript6
ES6
, la voie propre consiste à déstructurer les tableaux:Vous pouvez avoir des éléments supplémentaires dans la chaîne d'entrée. Dans ce cas, vous pouvez utiliser l'opérateur de repos pour obtenir un tableau pour le reste ou simplement les ignorer:
J'ai supposé une référence en lecture seule pour les valeurs et j'ai utilisé la
const
déclaration.Profitez d'ES6!
la source
const [name, , unit, ...others] = ...
Même si ce n'est pas le moyen le plus simple, vous pouvez le faire:
Mise à jour pour ES2015, utilisant la déstructuration
la source
keys
. La deuxième fonction de remplacement utilise[^~]+
pour faire correspondre chaque partie différente (c'est-à-dire «123 Street», «Apt 4», etc.) et appelle la fonction pour chaque partie, en la passant comme argument. À chaque exécution, la fonction prend la première clé du tableau de clés (en la supprimant également à l'aide de Array.unshift) et affecte la clé et la pièce à l'objet d'adresse.Vous voudrez examiner le substrat ou le fractionnement de JavaScript , car ce n'est pas vraiment une tâche adaptée à jQuery.
la source
eh bien, le moyen le plus simple serait quelque chose comme:
la source
Si Spliter est trouvé, alors seulement
Sépare le
sinon retourne la même chaîne
la source
Quelque chose comme:
Va probablement être plus facile
la source
split("~")
ousplit(/~/)
nonsplit("/~/")
. Ce dernier ne ferait que se diviser"John/~/Smith"
et non"John~Smith"
.Vous pouvez utiliser
split
pour diviser le texte.Comme alternative, vous pouvez également utiliser
match
comme suitL'expression régulière
[^~]+
correspondra à tous les caractères sauf~
et renverra les correspondances dans un tableau. Vous pouvez ensuite en extraire les correspondances.la source
str.split();
ne fonctionnait pas dans Firefox, mais cela fonctionnait à la fois dans Chrome et Firefox.str.split();
fonctionne dans Firefox et tous les principaux navigateurs .Zach avait ce droit .. en utilisant sa méthode, vous pouvez également créer un tableau apparemment "multidimensionnel" .. J'ai créé un exemple rapide sur JSFiddle http://jsfiddle.net/LcnvJ/2/
la source
JavaScript: Convertir la chaîne en tableau JavaScript Split
https://www.tutsmake.com/javascript-convert-string-to-array-javascript/
la source
Cela
string.split("~")[0];
fait avancer les choses.source: String.prototype.split ()
Une autre approche fonctionnelle utilisant la composition de curry et de fonction.
La première chose serait donc la fonction split. Nous voulons faire cela
"john smith~123 Street~Apt 4~New York~NY~12345"
dans ce["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
Alors maintenant, nous pouvons utiliser notre
splitByTilde
fonction spécialisée . Exemple:Pour obtenir le premier élément, nous pouvons utiliser l'
list[0]
opérateur. Construisons unefirst
fonction:L'algorithme est: divisé par les deux points, puis récupère le premier élément de la liste donnée. Nous pouvons donc composer ces fonctions pour construire notre
getName
fonction finale . Construire unecompose
fonction avecreduce
:Et maintenant l'utiliser pour composer
splitByTilde
etfirst
fonctionner.la source
Essayez en Javascript simple
la source
Étant donné que la question de fractionnement sur virgules est dupliquée sur cette question, ajoutez-la ici.
Si vous souhaitez diviser un caractère et gérer également des espaces supplémentaires qui pourraient suivre ce caractère, ce qui arrive souvent avec des virgules, vous pouvez
replace
alors utilisersplit
, comme ceci:la source
Utilisez ce code -
la source