gpt4 book ai didi

javascript - 替换第 n 次出现的 javascript

转载 作者:行者123 更新时间:2023-11-27 22:44:53 24 4
gpt4 key购买 nike

在此示例中,字符串'1,2,3,4,5'我试图捕获并替换第三次出现的逗号,字符

这里的代码

'1,2,3,4,5'.match(/(?:[^,]*,){2}[^,]*(,)/)

匹配 1,2,3 和我正在寻找的逗号但不确定如何仅替换逗号

'1,2,3,4,5'.replace(/(?:[^,]*,){2}[^,]*(,)/, "$")

替换4之前的所有内容,给出$4,5

我只想要一个字符串结果,例如 1,2,3$4,5

我通过两种不同的方式完成了这个任务,使用数组分割和切片以及使用需要回调的 String#replace

//splice
let parts = [];
let str = "1,2,3,4,5";
let formatted = ((parts = str.split(",")).slice(0,3)).join("-") + ' ' + parts.slice(3).join(":")

//callback
let str = "1,2,3,4,5";
str.replace(/,/g, (() => {
let count = 0;
return (match, position) => {
count += 1;
if(count == 3) return ' ';
else if(count < 3) return '-';
else return ':';
});
})())

使用普通的 String#replace 是否可以做到这一点?

最佳答案

您可以使用捕获组并替换为第一个捕获组

.replace(/((?:[^,]*,){2}[^,]*),/g, "$1:");
^ ^

捕获的组将捕获匹配的字符串,但替换字符串中的第三个逗号是 $1

console.log('1,2,3,4,5,2,3,4,5,2,3,4,5'.replace(/((?:[^,]*,){2}[^,]*),/g, "$1:"));

关于javascript - 替换第 n 次出现的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38476413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com