我有以下字符串
str = "11122+3434"
我想把它分成[“11122”,“+”,“3434”]。可以有以下分隔符+, - ,/,*
我试过以下
strArr = str.split(/[+,-,*,/]/g)
但是我得到了
strArr = [11122, 3434]
答案 0 :(得分:4)
分隔符是分隔数据的内容。因此,.split()
方法旨在删除分隔符,因为分隔符不是数据,因此它们根本不重要。
在您的情况下,两个值之间的东西也是数据。所以它不是一个分隔符,它是一个运算符(事实上,这就是它在数学中所称的)。
为此,您需要解析数据而不是拆分数据。因此,最好的事情是regexp:
var result = str.match(/(\d+)([+,-,*,/])(\d+)/);
返回一个数组:
["11122+3434", "11122", "+", "3434"]
因此,您的值为result[1]
,result[2]
和result[3]
。
答案 1 :(得分:2)
这应该有帮助...
str = '11122+3434+12323*56767'
strArr = str.replace(/[+,-,*,/]/g, ' $& ').split(/ /g)
console.log(strArr)

答案 2 :(得分:1)
嗯,一种方法是首先添加一个空格作为分隔符。
// yes,it will be better to use regex for this too
str = str.replace("+", " + ");
然后拆分em
strArr = str.split(" ");
它会返回你的数组
["11122", "+", "3434"]
答案 3 :(得分:1)
in括号+ - *需要转义,所以
strArr = str.split(/[\+\-\*/]/g)
答案 4 :(得分: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))
&#13;