Javascript在搜索的特定索引处使用.replace()

Javascript在搜索的特定索引处使用.replace(),javascript,Javascript,是否有一个函数可以在字符串的特定索引处一次性替换字符串中的字符串?例如: var string1="my text is my text and my big text"; var string2="my"; string1.replaceAt(string2,"your",2); 结果输出将是“我的文本是我的文本,你的大文本”没有内置的方法,但是你可以利用.replace()可以传递一个函数的事实: let count=0; log(“我的文本是我的文本和我的大文本”。替换(/my/g,f

是否有一个函数可以在字符串的特定索引处一次性替换字符串中的字符串?例如:

var string1="my text is my text and my big text";
var string2="my";
string1.replaceAt(string2,"your",2);

结果输出将是“我的文本是我的文本,你的大文本”

没有内置的方法,但是你可以利用
.replace()
可以传递一个函数的事实:

let count=0;
log(“我的文本是我的文本和我的大文本”。替换(/my/g,function()){
如果(count++==2)返回“您的”;
返回“我的”;

}));您只需稍加操作即可完成此操作,无需任何正则表达式

我过去常常获取字符串中另一个字符串的位置(索引)

从这里开始,它就像从开始返回一个子字符串到找到的索引一样简单,注入替换项,然后返回字符串的其余部分

函数替换(s,子字符串,替换,索引){
常量p=s.split(子字符串,索引+1).join(子字符串);
返回p.lengthlog(replaceAt(“我的文本是我的文本”,“我的”,“你的”,2))
这是一个原型版本

String.prototype.replaceAt=函数(str1、str2、pos){
让计数=0;
设re=newregexp(str1,“g”);
返回此。替换(re,function(){
返回(count++==pos)?str2:str1;
});
}

console.log(“我的文本是我的文本,我的大文本”).replaceAt(“我的”、“你的”,2))
除了使用函数进行替换外,您还可以使用给定变量直接对位置进行递减,并将该值作为是否进行替换的检查

constreplace=(string,s,r,p)=>string.replace(新的RegExp(s,'g'),m=>p--?m:r);
var string='我的文本是我的文本和我的大文本';

log(替换(字符串'my','your',2))因为我们需要寻找索引,在那里我们需要替换我们的单词,而对于其他单词,我们不需要任何更改,所以使用“”。通过和使用映射将字符串转换为数组,返回每个元素的原样,并在到达特定索引时替换单词(通过索引--==0的逻辑)。最后将数组连接回字符串

函数替换(文本、strFrom、strTo、索引){
返回文本。拆分(“”)
.map(d=>d==strFrom和索引--==0
?strTo
:d)
.加入(“”)
}
var string='我的文本是我的文本和我的大文本';
string=replace(字符串'my','your',2)

console.log(字符串)
末尾缺少a)等待什么?哦,好吧,对不起,我会修好的。或者其他人会:)谢谢guysOk,我怎么能用参数做一个函数呢?string1.replace(“my”,“your”,2)@itfreeler,方法是使用,从转义的输入字符串构造一个
RegExp
,并将上述内容包装到函数作用域中。@mplungjan regex的主要问题是,您假设子字符串不包含任何需要转义的RegExp字符。这可能会导致一些讨厌的错误,对于一些可能包含周期或星星的字符串。此外,要创建与您自己的类似的函数,需要进行这种转义,并且会大大降低速度:在需要时了解和处理这一点很好。对于简单的sporadid更改,无需进行性能检查。如果有的话,那么是的,我们应该处理它,总是喜欢
str.slice(…)
而不是
str.substring(…)
,因为它更一致(负索引,…),并且表现得像
arr.slice(…)
。不应按说明使用。应尝试使用
==
,因为这样更安全,并且在这种情况下可以轻松交换: