Javascript - 字符串拆分

时间:2016-09-28 04:50:59

标签: javascript string split

我有以下字符串

str = "11122+3434"

我想把它分成[“11122”,“+”,“3434”]。可以有以下分隔符+, - ,/,*

我试过以下

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

但是我得到了

strArr = [11122, 3434]

5 个答案:

答案 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;
&#13;
&#13;