如何在JavaScript中用replace()替换所有单词的最后指定字符串
JavaScript替换每个单词中最后出现的指定字符串
要实现给每个单词替换最后出现的指定内容,比如把"Trees are expensives"改成"Treis ari expensivis"(这里是把每个单词最后一个"e"替换为"i"),可以用两种方法实现:
方法一:分割单词后逐个处理(通用型,支持多字符目标)
这种方法兼容性强,不管目标是单个字符还是多字符串都能处理,步骤清晰:
- 把原字符串按空格分割成单词数组
- 遍历每个单词,找到目标内容最后一次出现的位置
- 对单词进行局部替换
- 把处理后的单词重新拼接成字符串
代码示例:
const originalStr = "Trees are expensives"; const targetSubstr = "e"; const replaceWith = "i"; const processedStr = originalStr.split(/\s+/) .map(word => { const lastPos = word.lastIndexOf(targetSubstr); if (lastPos === -1) return word; // 单词里没有目标内容,直接返回 // 截取目标位置前后的内容,拼接替换后的结果 return word.slice(0, lastPos) + replaceWith + word.slice(lastPos + targetSubstr.length); }) .join(' '); console.log(processedStr); // 输出:Treis ari expensivis
如果要替换多字符目标,比如把每个单词最后出现的"es"换成"is",只需修改targetSubstr为"es"、replaceWith为"is",原字符串"Trees are expensives"会变成"Treis are expensivis"。
方法二:正则表达式替换(适合单个字符目标)
如果目标是单个字符,可以用正则的正向断言,匹配每个单词内最后一次出现的目标字符:
const originalStr = "Trees are expensives"; const processedStr = originalStr.replace(/e(?=\w*\b)(?!.*e)/g, 'i'); console.log(processedStr); // 输出:Treis ari expensivis
正则说明:
e:匹配目标字符(?=\w*\b):正向断言,确保后面是单词的剩余部分直到单词边界(?!.*e):负向断言,确保后面没有更多的目标字符,也就是当前匹配的是单词内最后一个e
内容的提问来源于stack exchange,提问作者Ywha
相关产品推荐
相关产品推荐

