2
votes

Comment séparer les caractères de chaîne et les caractères mathématiques d'une chaîne

Je souhaite séparer la chaîne alphabétique ou numérique et les caractères mathématiques d'une chaîne. Par exemple -

var test = "test1+test2*3+(test3*6)";
I want to separate it like this - 

var result = ["test1", "+", "test2", "*", "3", "+", "(", "test3", "*", "6",")"];

Quelqu'un peut-il m'aider à obtenir le résultat, merci d'avance.


0 commentaires

4 Réponses :


6
votes

Vous pouvez utiliser une expression régulière pour faire correspondre un caractère mathématique ou tout autre caractère que des caractères mathématiques:

var test = "test1+test2*3+(test3*6)";
var result = test.match(/[+*()]|[^+*()]+/g);
console.log(result);
// ->
// ["test1","+","test2","*","3","+","(","test3","*","6",")"]
  • [+ * ()] - Faire correspondre un seul + , * , ( ou ) (n'hésitez pas à ajouter les caractères que vous souhaitez isoler ici)
  • | - OU
  • [^ + * ()] + - Correspond à tout sauf ces caractères, une ou plusieurs fois


0 commentaires

2
votes

Cela donne les correspondances requises: / (\ w + | \ W) / gm

  • \ w + correspond à n'importe quel jeton / variable (comme test1, test2, etc.)
  • \ W correspond à tous les opérateurs

0 commentaires

0
votes
var test = "test1+test2*3+(test3*6)";
var result = test.match(/\w+|\W/g);

console.log(result);

0 commentaires

0
votes

var test = "test1+test2*3+(test3*6)";
var temp=''
var arr=[];
for(var i in test){

if((/[^A-Za-z0-9]/).test(test[i]))

{arr.push(temp)
arr.push(test[i])
temp='';

}
else{
temp+=test[i]
}
}
console.log(arr.filter((value)=>{return value!==''}))


0 commentaires