2016-09-28 2 views
0

У меня есть следующая строкаJavascript - Строка расколоть

str = "11122+3434" 

Я хочу, чтобы разбить его на [ "11122", "+", "3434"]. Там могут быть следующие разделители +, -, /, *

Я попытался следующий

strArr = str.split(/[+,-,*,/]/g) 

Но я получаю

strArr = [11122, 3434] 
+0

могут быть различные разделители или может быть один в то время –

+0

вы хотите разделить только математические выражения или что-нибудь еще? – Pankaj

+0

только один разделитель за раз. Я хочу разделить только математические выражения – Neeraj

ответ

4

Разделители вещи, которые отделяют данные. Таким образом, метод .split() предназначен для удаления разделителей, поскольку разделители не являются данными, поэтому они не важны вообще.

В вашем случае вещь между двумя значениями также является данными. Так что это не разделитель, это оператор (на самом деле это то, что он называется в математике).

Для этого вы хотите проанализировать данные вместо разделения данных. Лучше всего для этого, поэтому регулярное выражение:

var result = str.match(/(\d+)([+,-,*,/])(\d+)/); 

возвращает массив:

["11122+3434", "11122", "+", "3434"] 

Так что ваши ценности будет result[1], result[2] и result[3].

1

Хм, один из способов - сначала добавить пробел в качестве разделителя.

// yes,it will be better to use regex for this too 
str = str.replace("+", " + "); 

Затем разделить EM

strArr = str.split(" "); 

и вернет ваш массив

["11122", "+", "3434"] 
1

кронштейн + - * нужно бежать, так

strArr = str.split(/[\+\-\*/]/g) 
+0

, это не даст вам символов. –

2

Это должно помочь. ..

str = '11122+3434+12323*56767' 
 
strArr = str.replace(/[+,-,*,/]/g, ' $& ').split(/ /g) 
 
console.log(strArr)

0

var str = "11122+77-3434"; 
 

 
function getExpression(str) { 
 
    var temp = str.split(''); 
 
    var part = ''; 
 
    var result = [] 
 
    for (var i = 0; i < temp.length; i++) { 
 
    if (temp[i].match(/\d/) && part.match(/\d/g)) { 
 
     part += temp[i]; 
 
    } else { 
 
     result.push(part); 
 
     part = temp[i] 
 
    } 
 
    if (i === temp.length - 1) { //last item 
 
     result.push(part); 
 
     part = ''; 
 
    } 
 
    } 
 
    return result; 
 
} 
 
console.log(getExpression(str))