Javascript 替换字符串索引处的字符

Javascript 替换字符串索引处的字符,javascript,Javascript,为什么下面的代码对我不起作用?我不能在字符串中的特定索引处重新赋值吗 function replaceChar (str) { let i for (i = 0; i < str.length; i++) { if (str[i] == '-') { str[i] = ' ' } } return str } 函数replaceChar(str){ 让我 对于(i=0;ich===“-”?”:ch.join(“”); } 控制台日志(repl

为什么下面的代码对我不起作用?我不能在字符串中的特定索引处重新赋值吗

function replaceChar (str) {
  let i

  for (i = 0; i < str.length; i++) {
    if (str[i] == '-') {
      str[i] = ' '
    }
  }
  return str
}
函数replaceChar(str){
让我
对于(i=0;i
字符串在JavaScript中是不可变的。您必须创建一个新字符串:

str = str.substring(0, i) + ' ' + str.substring(i + 1);
如果经常这样做,可以将字符串转换为字符数组,进行替换,然后将数组转换回字符串。以下是一个ES2015+示例:

函数replaceChar(str){
return[…str].map(ch=>ch===“-”?”:ch.join(“”);
}

控制台日志(replaceChar(“testing-1-2-3”)字符串在Javascript中是不可变的-您不能更改单个字符。如果要执行类似操作,必须先将字符串显式转换为数组,执行更改,然后再次将数组合并回字符串:

函数replaceChar(str){
str=[…str];
让我
对于(i=0;i
您可以同时使用
split()
join()
。按
-
拆分字符串并按
加入数组

str.split("-").join(" ");