【问题标题】:Replacing character at a particular index with a string in Javascript , Jquery用Javascript,Jquery中的字符串替换特定索引处的字符
【发布时间】:2012-06-02 19:40:57
【问题描述】:

是否可以用字符串替换特定位置的a字符

假设有一个字符串:"I am a man"

我想将 7 处的字符替换为字符串 "wom"(不管原始字符是什么)。

最终结果应该是:"I am a woman"

【问题讨论】:

标签: javascript jquery actionscript


【解决方案1】:

字符串在 JavaScript 中是不可变的 - 你不能“就地”修改它们。

你需要把原来的字符串剪掉,然后返回一个由所有片段组成的新字符串:

// replace the 'n'th character of 's' with 't'
function replaceAt(s, n, t) {
    return s.substring(0, n) + t + s.substring(n + 1);
}

注意:我没有将其添加到 String.prototype,因为在某些浏览器上,如果您将函数添加到内置类型的 prototype,性能会非常糟糕。

【讨论】:

  • 它们确实是不可变的,但这并不意味着您必须进行索引数学运算。已经有替换方法了。查看我的回复。
  • @Slavo .replace 不支持基于位置的索引,除非您构造一个不必要的复杂正则表达式。
  • 我同意。问题中给出的示例不需要复杂的 RegEx。我想这一切都取决于实际用例。
  • @Slavo OP 的用例是 by index 替换字符 - .replace() 替换 by content。即,他想在第 7 位替换 不管已经有什么字符
  • 我明白了。我要说的是他的第一个例子可以由str.replace("man", "woman");
【解决方案2】:

Javascript 中有一个string.replace() 方法: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace

附言
顺便说一句,在您的第一个示例中,您所说的“m”的索引是 7。Javascript 使用从 0 开始的索引。

【讨论】:

  • 这不能满足 OP 的问题。他们希望通过索引访问,并将 string.replace() 替换为正则表达式。这是完全不同的。
【解决方案3】:

或者你可以这样做,使用数组函数。

var a='I am a man'.split('');
a.splice.apply(a,[7,1].concat('wom'.split('')));
console.log(a.join(''));//<-- I am a woman

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-20
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    相关资源
    最近更新 更多