我正在创建一个分割字符串以计算某些数据的函数。例如,这是输入示例“34 + 23-32 + 3”。我尝试以多种形式解决问题,而不使用RegExp。这是代码:
function calcOp() {
str = "34+23-32+3";
frstIndex = 0;
dArray = [];
for (var i = 0; i < str.length; i++) {
switch (str.charAt(i)) {
case "+" :
dArray.push(str.slice(frstIndex, i));
dArray.push(str.charAt(i));
}
}
}
这是一个简短的例子,这给了我dArray = [“34”,“+”];但是没有运气,我算法试图用字符串的所有字符创建一个数组,并且连接数字也没有运气,有没有办法实现这一点?提前谢谢。
答案 0 :(得分:1)
在交换机中添加更多运算符,将firstIndex
更改为指向运算符后面的字符,并在循环后添加最后一项:
var str = "34+23-32+3";
var firstIndex = 0;
var dArray = [];
for (var i = 0; i < str.length; i++) {
switch (str.charAt(i)) {
case "+":
case "-":
dArray.push(str.substr(firstIndex, i - firstIndex));
firstIndex = i + 1;
dArray.push(str.charAt(i));
}
}
dArray.push(str.substr(firstIndex));
// Show result in snippet
document.write(JSON.stringify(dArray));
&#13;