javascript scinde une chaîne en fonction de l'espace, mais ignorer l'espace entre guillemets (avis de ne pas diviser par le colon trop)
J'ai besoin d'aide le découpage d'une chaîne de caractères en javascript par un espace (" "), ignorant de l'espace à l'intérieur des guillemets expression.
J'ai cette chaîne:
var str = 'Time:"Last 7 Days" Time:"Last 30 Days"';
Je m'attends à ma chaîne pour être diviser en 2:
['Time:"Last 7 Days"', 'Time:"Last 30 Days"']
mais mon code se divise à 4:
['Time:', '"Last 7 Days"', 'Time:', '"Last 30 Days"']
c'est mon code:
str.match(/(".*?"|[^"\s]+)(?=\s*|\s*$)/g);
Merci!
- Alors que la question liée est liée, il n'est pas un doublon: Cette question explicitement veut non cotées chaînes qui sont jointes à double chaînes entre guillemets (par exemple,
foo:"bar none"
) pour être reconnu comme un seul jeton (et aussi ne pas parler de la nécessité de gérer échappé à double-guillemets.)
Vous devez vous connecter pour publier un commentaire.
Expliqué:
S'avère, pour fixer votre expression originale, vous avez juste besoin d'ajouter un
+
sur le groupe:['Time:Last 7 Days', 'Time:Last 30 Days']
match
méthode. Mais si vousreplace
par la suite, vous pouvez utiliser des groupes de capture etc et laisser les guillemets out. Probablement mieux pour vous poster une nouvelle question.s.match(/(?:[^\s"']+|['"][^'"]*["'])+/g)
ES6 solution à l'appui:
Code:
De sortie: