为什么下面的代码对我不起作用?我不能在字符串的特定索引处重新分配值吗?
function replaceChar (str) {
let i
for (i = 0; i < str.length; i++) {
if (str[i] == '-') {
str[i] = ' '
}
}
return str
}
答案 0 :(得分:3)
字符串在JavaScript中是不可变的。您必须创建一个 new 字符串:
str = str.substring(0, i) + ' ' + str.substring(i + 1);
如果您经常这样做,则可以将字符串转换为字符数组,进行替换,然后将数组转换回字符串。这是一个ES2015 +示例:
function replaceChar(str) {
return [...str].map(ch => ch === "-" ? " " : ch).join("");
}
console.log(replaceChar("testing-1-2-3"));
您的整个循环可以用replace
method代替:
str = str.replace(/-/g, " ");
答案 1 :(得分:2)
字符串在Javascript中是不可变-您不能更改单个字符。如果要执行类似的操作,则必须首先将字符串显式转换为数组,执行更改,然后再次将数组重新连接回字符串:
function replaceChar (str) {
str = [...str];
let i
for (i = 0; i < str.length; i++) {
if (str[i] == '-') {
str[i] = ' '
}
}
return str.join('');
}
console.log(replaceChar('foo-bar-baz'));
答案 2 :(得分:2)
您可以同时使用split()
和join()
。用-
分割字符串,然后用<space>
str.split("-").join(" ");