我正试图用一个新字符设置字符串中某个索引处的字符值,我想知道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'))