2017-10-18 5 views
0

J'ai un problème avec la séparation de la chaîne avec le motif. Je sais que je peux utiliser String.prototype.split pour diviser la chaîne. Cependant si je l'utilise, je perds les délimiteurs.Comment diviser une chaîne avec un motif sans perdre de texte?

Par exemple

const text = '{user} foo bar {time} test test'; 
const arr = text.split(/\{[a-z]*\}/) 
// arr = ["", " foo bar ", " test test"] 

Ce que je pense est ["{user}", " foo bar ", "{time}", " test test"]

Est-il possible de réaliser avec split?

+2

Utiliser 'text.split (/ (\ {[az] *}) /) filtre (Boolean)' –

+0

Vous n'avez pas. besoin de n'importe quel RegExp complexe. Il suffit d'essayer ce 'text.split (" ");' – Krusader

+1

@Krusader Cela ne fonctionnera pas en raison de '" foo bar "' et '" test de test "' –

Répondre

2

Essayez le match suivant:

const text = '{user} foo bar {time} test test'; 
 
const arr = text.match(/\{.*?\}|\b[\w\s]+\b/g); 
 
// arr = ["", " foo bar ", " test test"] 
 

 
console.log(arr)