Comment puis-je diviser une chaîne qui contient des signes différents?
-
18-09-2019 - |
Question
Je veux diviser une chaîne qui peut ressembler à ceci: mot1, mot2, mot3, word4, word5, word6.word7. etc.
La chaîne est d'une sortie que je reçois d'une page php qui collecte des données à partir d'une base de données pour la chaîne peut être différent, mais les premiers mots sont toujours séparés par; puis, et les derniers mots avec point (.)
Je veux être en mesure d'aller chercher tous les mots qui se termine avec, par exemple; , ou . dans un tableau. Est-ce que quelqu'un sait comment faire cela?
Je voudrais aussi savoir comment récupérer uniquement les mots qui se termine par;
La fonction ends_with (string, character) ci-dessous des œuvres, mais il ne tient pas à l'égard des espaces. Par exemple, si le mot est Jonas sable, il imprime seulement Sand. Tout le monde sait comment résoudre ce problème?
La solution
Probablement
var string = "word1;word2;word3,word4,word5,word6.word7";
var array = string.split(/[;,.]/);
// array = ["word1", "word2", "word3", "word4", "word5", "word6", "word7"]
La clé est dans l'expression régulière passée à la méthode String#split
. L'opérateur de classe de caractères []
permet l'expression régulière de choisir entre les caractères contenus avec elle.
Si vous avez besoin de partager sur une chaîne qui contient plus d'un caractère, vous pouvez utiliser le |
à se différencier.
var array = string.split(/;|,|./) // same as above
Modifier N'a pas lu à fond la question. Quelque chose comme ceci
var string = "word1;word2;word3,word4,word5,word6.word7";
function ends_with(string, character) {
var regexp = new RegExp('\\w+' + character, 'g');
var matches = string.match(regexp);
var replacer = new RegExp(character + '$');
return matches.map(function(ee) {
return ee.replace(replacer, '');
});
}
// ends_with(string, ';') => ["word1", "word2"]
Autres conseils
var myString = word1;word2;word3,word4,word5,word6.word7;
var result = myString.split(/;|,|./);