JavaScript:替换字符串中最后出现的文本

2022-08-30 04:26:26

请参阅下面的代码片段:

var list = ['one', 'two', 'three', 'four'];
var str = 'one two, one three, one four, one';
for ( var i = 0; i < list.length; i++)
{
     if (str.endsWith(list[i])
     {
         str = str.replace(list[i], 'finish')
     }
 }

我想用字符串中的单词finish替换单词one的最后一次出现,我所拥有的将不起作用,因为替换方法只会替换它的第一次出现。有谁知道我如何修改该片段,以便它仅替换“one”的最后一个实例


答案 1

好吧,如果字符串真的以模式结尾,你可以这样做:

str = str.replace(new RegExp(list[i] + '$'), 'finish');

答案 2

您可以使用 来查找该单词的最后一次出现,然后进行串联以生成替换字符串。String#lastIndexOfString#substring

n = str.lastIndexOf(list[i]);
if (n >= 0 && n + list[i].length >= str.length) {
    str = str.substring(0, n) + "finish";
}

...或沿着这些路线。