【问题标题】:split a string with numbers with operations用操作拆分带有数字的字符串
【发布时间】:2015-08-10 02:13:44
【问题描述】:

如何拆分字符串,例如

'11+4+3' 变成['11', '+', '4', '+', '3']?

甚至转数组

[1, 1, '+', 4, '+', 3] 变成[11, '+', 4, '+', 3]?

用正则表达式分割字符串

/[^0-9]/g 

将拆分为我想要的数字,但会删除操作值。我需要一种方法,以便我也可以保留操作值。我也知道字符串的eval() 会自动将字符串值添加到数值中,但我试图弄清楚如何在不使用eval() 的情况下添加数字字符串和操作。

【问题讨论】:

标签: javascript arrays string


【解决方案1】:
var str = "11+3+4";    
console.log(str.split(/(\+)/));

输出:

["11", "+", "3", "+", "4"]

【讨论】:

  • 甚至s.split(/(\D)/) for 11-4+3*56/2 返回["11", "-", "4", "+", "3", "*", "56", "/", "2"]
【解决方案2】:
function parseAsParts(input) {

  if (input instanceof Array) {
    input = input.join('');
  }
  var retVal = [];
  var thisMatch = null;
  var partSearch = /(\d+|[+-=])/g;
  while (thisMatch = partSearch.exec(input)) {
    retVal.push(thisMatch[0]);
  }
  return retVal;
}

这似乎得到了你想要的。您可以添加更多字符以在正则表达式内部查找它具有“+-=”的位置。它不会验证字符串是否具有您想要的格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    相关资源
    最近更新 更多