1

我有一个 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
4

3 回答 3

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 可能更容易。

于 2013-04-12T07:30:55.363 回答
1

您需要用新字符串替换实际字符串

$problem[0][j] = $problem[0][j].replace("+","-");
于 2013-04-12T07:31:55.063 回答
1

.replace()不会对字符串进行更改,它只是返回一个带有这些更改的新字符串。

//这什么都不做

problem[0][j].replace("+","-");

//这会保存替换的字符串

problem[0][j] = problem[0][j].replace("+","-");
于 2013-04-12T07:33:40.230 回答