【问题标题】:Replace nth occurrence javascript替换第 n 次出现的 javascript
【发布时间】:2016-07-20 08:42:52
【问题描述】:

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

这段代码在这里

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

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

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

替换4之前的所有内容@ 987654327@

我只想要一个字符串结果,例如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 实现吗?

【问题讨论】:

    标签: javascript regex str-replace


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-08
      • 2013-02-20
      • 2011-03-05
      • 2018-08-11
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 2011-08-17
      相关资源
      最近更新 更多