Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换第n次出现的字符串_Javascript_Regex - Fatal编程技术网

Javascript 替换第n次出现的字符串

Javascript 替换第n次出现的字符串,javascript,regex,Javascript,Regex,例如: 'abcjkjokabckjk'.replace('/(abc)/g',...) 如果我想替换指定的职位“abc”,我能做什么 像这样: 使用RegExp构造函数在regex中传递变量 var s='abcjkjokabckjk' 搜索='abc' 变量n=2 警报(s.replace(RegExp(“^(?:*abc){”+n+“}”)、函数(x){return x.replace(RegExp(search+“$”,“HHHH”)})这可以在没有RegEx的情况下完成 字符串方法

例如:

'abcjkjokabckjk'.replace('/(abc)/g',...)
如果我想替换指定的职位“abc”,我能做什么

像这样:

使用
RegExp
构造函数在regex中传递变量

var s='abcjkjokabckjk'
搜索='abc'
变量n=2

警报(s.replace(RegExp(“^(?:*abc){”+n+“}”)、函数(x){return x.replace(RegExp(search+“$”,“HHHH”)})
这可以在没有RegEx的情况下完成

字符串方法,可与

var字符串='abcde | abcde | abcde | abcde',
指针='abc',
firstIndex=string.indexOf(指针),
lastIndex=字符串。lastIndexOf(指针);
// ----------------------------------------------------------------
//删除第一次出现
var first=string.substring(0,firstIndex)+'***'+string.substring(firstIndex+pinder.length);
document.getElementById('first')。innerHTML=first;
// ----------------------------------------------------------------
//删除上次发生的事件
var last=string.substring(0,lastIndex)+'***'+string.substring(lastIndex+pinder.length);
document.getElementById('last')。innerHTML=last;
// ----------------------------------------------------------------
//删除第n次出现
//对于演示:删除第二次出现
var counter=2,//从零开始的索引
n指数=0;
如果(计数器>0){
而(计数器--){
//获取下一个事件的索引
nThIndex=字符串.indexOf(针,nThIndex+针.长度);
}
//这里的'nThIndex'将是第n次出现的索引
}
var second=string.substring(0,n次索引)+'***'+string.substring(n次索引+指针.length);
document.getElementById('second')。innerHTML=second
表tr td:n子项(2){
颜色:绿色;
}
运输署{
填充:15px;
}

第一次发生时更换后:
更换上次发生的后:
替换2ndzero基索引后发生:

使用Avinash对RegExp构造函数的方法

const replace_nth = function (s, f, r, n) {
    // From the given string s, replace f with r of nth occurrence
    return s.replace(RegExp("^(?:.*?" + f + "){" + n + "}"), x => x.replace(RegExp(f + "$"), r));
};
下面是一个例子

$node
Welcome to Node.js v13.1.0.
Type ".help" for more information.
>
>  const replace_nth = function (s, f, r, n) {
...    // From the given string s, replace f with r of nth occurrence
...    return s.replace(RegExp("^(?:.*?" + f + "){" + n + "}"), x => x.replace(RegExp(f + "$"), r));
...};

> replace_nth('hello world', 'l', 'L', 1)
'heLlo world'

您想替换第二次出现的
abc
?不只是第二次,如果字符串由许多“abc”组成,如何替换我自己指定的“abc”?如何替换?你应该分享条件来找到这个特定的“abc”。例如:第二个,最后一个,或者是“z”后面的“abc”可能我的问题不清楚。例如:有一个字符串“abcsfdsfabcksfabc”,这个字符串中有三个“abc”,如果我想替换这个字符串中的一个特定位置“abc”,我能做什么?太好了!!你也可以在RegExp中使用needle
search