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...
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...
Réponses:
Avec la String.prototype.split
fonction JavaScript :
var input = 'john smith~123 Street~Apt 4~New York~NY~12345';
var fields = input.split('~');
var name = fields[0];
var street = fields[1];
// etc.
Vous n'avez pas besoin de jQuery.
var s = 'john smith~123 Street~Apt 4~New York~NY~12345';
var fields = s.split(/~/);
var name = fields[0];
var street = fields[1];
Selon ECMAScript6 ES6
, la voie propre consiste à déstructurer les tableaux:
const input = 'john smith~123 Street~Apt 4~New York~NY~12345';
const [name, street, unit, city, state, zip] = input.split('~');
console.log(name); // john smith
console.log(street); // 123 Street
console.log(unit); // Apt 4
console.log(city); // New York
console.log(state); // NY
console.log(zip); // 12345
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:
const input = 'john smith~123 Street~Apt 4~New York~NY~12345';
const [name, street, ...others] = input.split('~');
console.log(name); // john smith
console.log(street); // 123 Street
console.log(others); // ["Apt 4", "New York", "NY", "12345"]
J'ai supposé une référence en lecture seule pour les valeurs et j'ai utilisé la const
déclaration.
Profitez d'ES6!
const [name, , unit, ...others] = ...
Même si ce n'est pas le moyen le plus simple, vous pouvez le faire:
var addressString = "~john smith~123 Street~Apt 4~New York~NY~12345~",
keys = "name address1 address2 city state zipcode".split(" "),
address = {};
// clean up the string with the first replace
// "abuse" the second replace to map the keys to the matches
addressString.replace(/^~|~$/g).replace(/[^~]+/g, function(match){
address[ keys.unshift() ] = match;
});
// address will contain the mapped result
address = {
address1: "123 Street"
address2: "Apt 4"
city: "New York"
name: "john smith"
state: "NY"
zipcode: "12345"
}
Mise à jour pour ES2015, utilisant la déstructuration
const [address1, address2, city, name, state, zipcode] = addressString.match(/[^~]+/g);
// The variables defined above now contain the appropriate information:
console.log(address1, address2, city, name, state, zipcode);
// -> john smith 123 Street Apt 4 New York NY 12345
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.
Si Spliter est trouvé, alors seulement
Sépare le
sinon retourne la même chaîne
function SplitTheString(ResultStr) { if (ResultStr != null) { var SplitChars = '~'; if (ResultStr.indexOf(SplitChars) >= 0) { var DtlStr = ResultStr.split(SplitChars); var name = DtlStr[0]; var street = DtlStr[1]; } } }
Quelque chose comme:
var divided = str.split("/~/");
var name=divided[0];
var street = divided[1];
Va probablement être plus facile
split("~")
ou split(/~/)
non split("/~/")
. 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 suit
var str = 'john smith~123 Street~Apt 4~New York~NY~12345';
matches = str.match(/[^~]+/g);
console.log(matches);
document.write(matches);
L'expression régulière [^~]+
correspondra à tous les caractères sauf ~
et renverra les correspondances dans un tableau. Vous pouvez ensuite en extraire les correspondances.
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/
// array[0][0] will produce brian
// array[0][1] will produce james
// array[1][0] will produce kevin
// array[1][1] will produce haley
var array = [];
array[0] = "brian,james,doug".split(",");
array[1] = "kevin,haley,steph".split(",");
JavaScript: Convertir la chaîne en tableau JavaScript Split
var str = "This-javascript-tutorial-string-split-method-examples-tutsmake."
var result = str.split('-');
console.log(result);
document.getElementById("show").innerHTML = result;
<html>
<head>
<title>How do you split a string, breaking at a particular character in javascript?</title>
</head>
<body>
<p id="show"></p>
</body>
</html>
https://www.tutsmake.com/javascript-convert-string-to-array-javascript/
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"]
const split = (separator) => (text) => text.split(separator);
const splitByTilde = split('~');
Alors maintenant, nous pouvons utiliser notre splitByTilde
fonction spécialisée . Exemple:
splitByTilde("john smith~123 Street~Apt 4~New York~NY~12345") // ["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
Pour obtenir le premier élément, nous pouvons utiliser l' list[0]
opérateur. Construisons une first
fonction:
const first = (list) => list[0];
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 une compose
fonction avec reduce
:
const compose = (...fns) => (value) => fns.reduceRight((acc, fn) => fn(acc), value);
Et maintenant l'utiliser pour composer splitByTilde
et first
fonctionner.
const getName = compose(first, splitByTilde);
let string = 'john smith~123 Street~Apt 4~New York~NY~12345';
getName(string); // "john smith"
//basic url=http://localhost:58227/ExternalApproval.html?Status=1
var ar= [url,statu] = window.location.href.split("=");
É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 utiliser split
, comme ceci:
var items = string.replace(/,\s+/, ",").split(',')
Utilisez ce code -
function myFunction() {
var str = "How are you doing today?";
var res = str.split("/");
}