【问题标题】:Setting new value to str.charAt() [duplicate]将新值设置为 str.charAt() [重复]
【发布时间】:2020-03-12 18:22:02
【问题描述】:

我正在尝试使用新字符在字符串中的某个索引处设置字符的值,我想知道是否可以使用 charAt() 方法。像这样的东西。 str.charAt(1) 首先会返回字符串“e”。

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

str.charAt(1) 然后将返回字符串“a”。

我的预期结果是新字符串显示为“你好”。但这会导致 Uncaught ReferenceError: Invalid left-hand side in assignment。那么这种方法根本不可能吗?

【问题讨论】:

标签: javascript string indexing char charat


【解决方案1】:

charAt() 是字符串原型上的一个函数,您正试图用该语法覆盖它; charAt() 将返回索引处的字符,它是 getter,而不是 setter;所以你需要定义自己的自定义方法来实现这一点,或者通过定义像下面的 sn-p 这样的纯函数,或者在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'))

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 2018-05-14
    相关资源
    最近更新 更多