正在将新值设置为str.charAt()



我正试图用一个新字符设置字符串中某个索引处的字符值,我想知道charAt((方法是否可行。像这样的东西。str.charAt(1)将首先返回字符串">e"。

let str = "hello";
str.charAt(1) = 'a';

str.charAt(1)将返回字符串">a"。

我预期的结果是,新字符串读作"hallo"。但这会导致未捕获的ReferenceError:赋值中左侧无效。那么,用这种方法是不是根本不可能呢?

charAt((是String原型上的一个函数,您正试图用该语法覆盖它;charAt()将返回索引处的字符,它是getter,而不是setter;因此,您需要定义自己的自定义方法来实现这一点,可以在下面定义一个类似snippet的纯函数,也可以在String.prototype上定义它,以便在任何字符串上使用;

let str = "hello";
function replaceStrAtIndex( str, index, letter ){
let modifiedStr = [...str];
modifiedStr[index] = letter;
return modifiedStr.join('')
}
console.log(replaceStrAtIndex(str, 1, 'a'))


或定义字符串原型:

String.prototype.replaceCharAt = function replaceStrAtIndex( index, letter ){
let modifiedStr = [...this];
modifiedStr[index] = letter;
return modifiedStr.join('')
}
let str = "hello";
console.log(str.replaceCharAt( 1, 'a'))

最新更新