为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript - 替换除最后一个定界符之外的所有分隔符

Javascript - 替换除最后一个定界符之外的所有分隔符

RISEBY 2022-09-16 21:27:38
我有这个代码:var txt = 'DELIMETER is replaced';txt += 'DELIMETER is replaced';txt += 'DELIMETER is replaced';txt += 'DELIMETER is replaced';txt += 'DELIMETER is replaced'; <-- leave this and not replace the last DELIMETERtxt = txt.replace(/DELIMETER/g, "HI");我知道所有有“定界仪”的单词都将替换为“HI”,但我想要的只是替换“定界仪”的前四个出现,但保留最后一个“定界仪”,而不是替换该词。如何实现这一点,我必须使用正则表达式?
查看完整描述

3 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您可以混合使用正则表达式和 java 脚本。一种这样的方法是通过使用字符串,然后使用函数在替换时循环访问匹配项来检查它是否是最后一次出现。如果匹配项位于末尾,则返回匹配的字符串(定界符),否则,请替换为替换项 (HI)。lastIndexOf


var txt = 'DELIMETER is replaced';

txt += 'DELIMETER is replaced';

txt += 'DELIMETER is replaced';

txt += 'DELIMETER is replaced';

txt += 'DELIMETER is replaced';


const target = "DELIMETER";

const replacement = "HI"

const regex = new RegExp(target, 'g');


txt = txt.replace(regex, (match, index) => index === txt.lastIndexOf(target) ? match : replacement);


console.log(txt)


查看完整回答
反对 回复 2022-09-16
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

首先将文本分成两部分,最后一个分隔符之前的部分和它之后的所有内容。然后在第一部分中进行替换,并将它们连接在一起。


var txt = 'DELIMETER is replaced';

txt += 'DELIMETER is replaced';

txt += 'DELIMETER is replaced';

txt += 'DELIMETER is replaced';

txt += 'DELIMETER is replaced';


var match = txt.match(/(.*)(DELIMETER.*)/);

if (match) {

  var [whole, part1, part2] = match;

  part1 = part1.replace(/DELIMETER/g, 'OK');

  txt = part1 + part2;

}

console.log(txt);


查看完整回答
反对 回复 2022-09-16
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

只需提前切掉最后一个分隔符即可。

var matches = txt.match(/^(.*)(DELIMETER.*)$/)
txt = matches[1].replace(/DELIMETER/g, "HI") + matches[2]


查看完整回答
反对 回复 2022-09-16
  • 3 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信