在 javascript str.replace(from, to, indexfrom) 中替换特定索引后的字符串

Posted

技术标签:

【中文标题】在 javascript str.replace(from, to, indexfrom) 中替换特定索引后的字符串【英文标题】:replace a string after specific index in javascript str.replace(from, to, indexfrom) 【发布时间】:2018-02-11 01:07:06 【问题描述】:

我喜欢在特定索引之后替换字符串。

例如:

var str = "abcedfabcdef"
    str.replace ("a","z",2)
    console.log(str) 
    abcedfzbcdef

有没有办法在 javascript 或 nodeJS 中做到这一点?

【问题讨论】:

【参考方案1】:

正则表达式替代,但替换特定索引后的所有匹配项:

console.log( 'abcabcabc'.replace(/a/g, (s, i) => i > 2 ? 'z' : s) )

【讨论】:

【参考方案2】:

没有直接的方法使用内置的replace 函数,但你总是可以为此创建一个新函数:

String.prototype.betterReplace = function(search, replace, from) 
  if (this.length > from) 
    return this.slice(0, from) + this.slice(from).replace(search, replace);
  
  return this;


var str = "abcedfabcdef"
console.log(str.betterReplace("a","z","2"))

【讨论】:

@user2969187 它仅替换索引后的第一个实例。要替换所有匹配项,例如 str.betterReplace(/a/g,"z",2) 只是为了名字起见,宁愿称之为replaceAfter :) 而要全部替换,我们也可以在函数内部使用replaceAll(可选地传递一个标志或命名函数)

以上是关于在 javascript str.replace(from, to, indexfrom) 中替换特定索引后的字符串的主要内容,如果未能解决你的问题,请参考以下文章

javaScript replace方法

JavaScript回文数

javaScript 的 replace 关于正则的用法

JavaScript 颜色加深或减淡

js中对String去空格

js中对String去空格