虽然我已经看到类似的问题,但没有什么可以解释为什么这不起作用,而且我不知道另一种选择。
我正在制作一个非常简单的计算器,当从字符串中拉出表达式时,我需要用eval识别的运算符替换'×'和'÷'等符号。
目前我正在尝试一次处理字符串中的一个字符并将其复制到新字符串中,并在必要时替换。似乎没有调用字符串中的字符的if
语句被调用,我也不知道为什么。
for (var i = 0; i < (expressionPre.length) ; i++) {
alert(expressionPre[i]);
if (expressionPre[i] == "÷") {
expressionPost += "/";
} else if (expressionPre[i] === '×') {
expressionPost += "*";
alert("Finally!");
} else if (expressionPre[i] == "−") {
expressionPost += "-";
} else if (expressionPre[i] % 1 == 0) {
expressionPost += expressionPre[i];
}
alert(expressionPost[i]);
}
答案 0 :(得分:2)
正如@beaver所说,你应该直接使用替换功能。 这是一个用另一个文本替换所有文本的函数
function tools_replaceAll(str, find, replace) {
return str.replace(new RegExp(find, 'g'), replace);
}
var str = "(1 ÷ 2 ÷ 2) × 3 × 3 − 4− 4 + 5 + 5";
str = tools_replaceAll(str, "÷" , "/" ) ;
str = tools_replaceAll(str, "×" , "*" ) ;
str = tools_replaceAll(str, "-" , "-" ) ;
alert( str ) ;