Question Comment est-ce que je divise une chaîne, en cassant à un caractère particulier?


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...

445
2017-09-18 20:14


origine


Réponses:


Avec JavaScript String.prototype.split fonction:

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.

712
2017-09-18 20:17



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];

46
2017-09-18 20:19



Selon ECMAScript6 ES6, la manière propre est de détruire 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 utilisé le const déclaration.

Profitez de ES6!


18
2018-02-12 09:15



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, en 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

16
2017-08-14 11:15



Vous voulez regarder dans JavaScript substr ou Divisé car ce n'est pas vraiment une tâche adaptée à jQuery


12
2017-09-18 20:18



Eh bien, le plus simple serait quelque chose comme:

var address = theEncodedString.split(/~/)
var name = address[0], street = address[1]

5
2017-09-18 20:20



Si Spliter est trouvé alors seulement

Sépare le

sinon renvoyer le 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];
        }
    }
}

5
2017-11-29 09:45



Quelque chose comme:

var divided = str.split("/~/");
var name=divided[0];
var street = divided[1];

Va probablement être plus facile


4
2017-09-18 20:21