2016-02-11 4 views
2

Хотя я не видел подобный вопрос, ничего не ответил, почему это не работает, и я не знаю альтернативы.Замена символов внутри строки в AngularJS

Я делаю очень простой калькулятор, и, вытягивая выражение из строки, мне нужно заменить символы, такие как '×' и '÷' операторами, признанными 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

Почему не использовать просто [заменить] (http://www.w3schools.com/jsref/jsref_replace.asp) function: 'var expressionPost = expressionPre.replace (" ÷ ","/");'? – beaver

ответ

2

как @beaver сказать, вы должны использовать функцию замены напрямую. это функция, который заменит все вхождение текста с другим одним

\t function tools_replaceAll(str, find, replace) { 
 
\t return str.replace(new RegExp(find, 'g'), replace); 
 
\t } 
 
\t var str = "(1 ÷ 2 ÷ 2) × 3 × 3 − 4− 4 + 5 + 5"; 
 
\t str = tools_replaceAll(str, "÷" , "/") ; 
 
\t str = tools_replaceAll(str, "×" , "*") ; 
 
\t str = tools_replaceAll(str, "-" , "-") ; 
 
\t alert( str) ;