我有一个js函数,一旦完成将计算基本代数方程。出于某种原因,它不会让我替换数组中字符串的第一个字符。我之前在这个函数中使用过它,但它现在不起作用了。我尝试过使用.replace()和.substring()。
以下是我尝试过的代码:
// this is what i've been testing it on
// $problem[o][j] = +5
var assi = $problem[0][j].charAt(0); // Get the first character, to replace to opposite sign
switch (assi){
case "+":
console.log($problem[0][j]);
$problem[0][j].replace("+","-");
console.log($problem[0][j]);
break;
}
以上输出到控制台:
> +5
> +5
我尝试了下一个代码:
// Second code i tried with $problem[0][j] remaining the same
switch(assi){
case "+":
console.log($problem[0][j]);
$problem[0][j].substring(1);
$problem[0][j] = "-" + $problem[0][j];
console.log($problem[0][j]);
break;
}
输出到控制台:
> +5
> -+5
答案 0 :(得分:4)
字符串是不可变的 - 某个字符串的内容无法更改。您需要使用替换创建一个新字符串。您可以将此新字符串分配给旧变量,使其“看起来像”修改。
var a = "asd";
var b = a.replace(/^./, "b"); //replace first character with b
console.log(b); //"bsd";
重新分配:
var a = "asd";
a = a.replace(/^./, "b"); //replace first character with b
console.log(a); //"bsd";
如果你想翻转一个数字的符号,可能更容易与-1相乘。
答案 1 :(得分:1)
你需要用新的字符串替换实际的字符串
$problem[0][j] = $problem[0][j].replace("+","-");
答案 2 :(得分:1)
.replace()
不会对字符串进行更改,只需返回一个包含所做更改的新字符串。
//这没有任何作用
problem[0][j].replace("+","-");
//这会保存替换后的字符串
problem[0][j] = problem[0][j].replace("+","-");