Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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-替换除最后一个delimeter之外的所有分隔符_Javascript - Fatal编程技术网

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

Javascript-替换除最后一个delimeter之外的所有分隔符,javascript,Javascript,我有以下代码: 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 DELIMETER txt = txt.replace(/DELIME

我有以下代码:

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 DELIMETER

txt = txt.replace(/DELIMETER/g, "HI");
我知道所有包含“DELIMETER”的单词都将替换为“HI”,但我只想替换“DELIMETER”的前四个单词,但保留最后一个“DELIMETER”,而不替换该单词


如何实现这一点我必须使用regex吗?

您可以混合使用regex和javascript。其中一种方法是使用字符串的lastIndexOf检查它是否是最后一次出现,然后使用函数迭代replace上的匹配项。如果匹配结束,则返回匹配的字符串DELIMETER,否则,替换为替换HI

var txt=‘DELIMETER被替换’; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; 常数目标=测力计; 常数替换=高 const regex=新的RegExptarget'g'; txt=txt.replaceregex,匹配,索引=>index==txt.lastIndexOftTarget?匹配:替换;
logtxt您可以混合使用正则表达式和javascript。其中一种方法是使用字符串的lastIndexOf检查它是否是最后一次出现,然后使用函数迭代replace上的匹配项。如果匹配结束,则返回匹配的字符串DELIMETER,否则,替换为替换HI

var txt=‘DELIMETER被替换’; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; 常数目标=测力计; 常数替换=高 const regex=新的RegExptarget'g'; txt=txt.replaceregex,匹配,索引=>index==txt.lastIndexOftTarget?匹配:替换;
console.logtxt首先将文本分为两部分,最后一个分隔符之前的部分和后面的所有部分。然后在第一部分中进行替换,并将它们连接在一起

var txt=‘DELIMETER被替换’; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; var match=txt.match/*DELIMETER.*/; 如果匹配{ var[整个,第1部分,第2部分]=匹配; 第1部分=第1部分。更换/DELIMETER/g,‘正常’; txt=第1部分+第2部分; }
console.logtxt 首先将文本分为两部分,最后一个分隔符之前的部分,以及最后一个分隔符之后的所有内容。然后在第一部分中进行替换,并将它们连接在一起

var txt=‘DELIMETER被替换’; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; txt+=“DELIMETER被替换”; var match=txt.match/*DELIMETER.*/; 如果匹配{ var[整个,第1部分,第2部分]=匹配; 第1部分=第1部分。更换/DELIMETER/g,‘正常’; txt=第1部分+第2部分; }
console.logtxt 只需提前去掉最后一个分隔符

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

只需提前去掉最后一个分隔符

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

我对每个答案投了赞成票,赞成你的建议,但这个答案正是我所需要的。我对每个答案投了赞成票,赞成你的建议,但这个答案正是我所需要的。