替换字符串的第1到第n个匹配.javascript
replacing the 1st to nth match of the string. javascript
问题是我想替换1st
出现到nth
出现的某个字符串。其中n
可以是任意数
示例测试字符串:
// 'one-two' the string I want to search
var str = "73ghone-twom2j2hone-two2717daone-two213";
我需要用"one"
替换第一个"one-two"
直到第n个匹配。
//so in terms of function. i need something like:
function replaceByOccurence(testSring, regex, nthOccurence) {
//implementation here
}
给定上面的函数,如果我将3
传递为nthOccurence
,它应该替换第一个匹配直到第三个匹配。如果我传递2
作为nthOccurence
,它应该替换第一个匹配直到第二个匹配,所以在我们的例子中,如果我们传递2
,它应该返回"73ghonem2j2hone2717daone-two213"
。注意,第三个"one-two"
没有被替换为"one"
。
有人能帮忙吗?我搜索了一下,但我在这里找不到类似的问题。
迷你更新 [SOLVED: check last Update]
所以我使用@anubhava的第一个解决方案,并试图把它放在字符串作为函数。我是这样写的:
String.prototype.replaceByOccurence = function(regex, replacement, nthOccurence) {
for (var i = 0; i < nthOccurence; i++)
this = this.replace(regex, replacement);
return this;
};
//usage
"testtesttest".replaceByOccurence(/t/, '1', 2);
显然我得到一个引用错误。它说left side assignment is not a reference
,它指向this = this.replace(regex, replacement)
。
最后一次更新
我把代码改成了:
String.prototype.replaceByOccurence = function (regex, replacement, nthOccurence) {
if (nthOccurence > 0)
return this.replace(regex, replacement)
.replaceByOccurence(regex, replacement, --nthOccurence);
return this;
};
我觉得简单的循环就可以了:
function replaceByOccurence(input, regex, replacement, nthOccurence) {
for (i=0; i<nthOccurence; i++)
input = input.replace(regex, replacement);
return input;
}
并将其命名为:
var replaced = replaceByOccurence(str, /one-two/, 'one', 3);
EDIT:另一个版本不循环
function replaceByOccurence(input, regex, replacement, num) {
i=0;
return input.replace(regex, function($0) { return (i++<num)? replacement:$0; });
}
并将其命名为:
var replaced = replaceByOccurence(str, /one-two/g, 'one', 3);
//=> 73ghtwom2j2htwo2717datwo213
像这样:
var myregex = /(.*?one-two){3}(.*)/;
result = yourString.replace(myregex, function(match) {
return match(1).replace(/one-two/g, "one") + match(2);
});
- 匹配的是整个字符串
- match(1)是字符串的开始,直到第三个
one-two
- match(2)是字符串 的剩余部分。
- 我们将字符串替换为转换匹配(1)(其中我们将
one-two
替换为one
)加上字符串的其余部分
相关文章:
- 从javascript到jquery的转换
- 如何从JavaScript到C#代码中获取特定值
- Javascript到jQuery的转换代码
- 使用AJAX POST从javascript到带有Strong参数的Rails4控制器
- JavaScript到PHP的时间戳失败,增加了大约一个半月的时间
- Javascript到Java NullPointerException虚拟方法
- Javascript到jquery的转换
- 从Javascript到C#获取正确的日期(以毫秒为单位)
- DHTMLX-分页后,点击网格重定向到第1页
- 如何使用nodejs步行模块将目录遍历到第一级
- 从 JavaScript 到 Java 的正则表达式测试
- 如何在javascript中将类添加到第三个
- 元素
- 我的设备后退按钮工作不正常,它转到第一个html,但返回到第二个html
- 从JavaScript到servlet的Ajax调用
- 漂亮的打印Java、XML、JavaScript..到HTML
- 如何使用javascript将两个dom元素集合合并到第三个集合中
- 从第 1 页检索到第 2 页的 Javascript 值
- 使用javascript将链接中的容器包装到第一个<a>href
- cvs到javascript删除第一行
- 替换字符串的第1到第n个匹配.javascript