如何使用javascript替换字符串中最后出现的字符

Posted

技术标签:

【中文标题】如何使用javascript替换字符串中最后出现的字符【英文标题】:How to replace last occurrence of characters in a string using javascript 【发布时间】:2011-04-19 06:32:51 【问题描述】:

我在找出如何用 ' 和 ' 替换字符串中的最后一个 ', ' 时遇到问题:

有这个字符串: 测试1,测试2,测试3

我想结束: 测试1、测试2和测试3

我正在尝试这样的事情:

var dialog = 'test1, test2, test3';    
dialog = dialog.replace(new RegExp(', /g').lastIndex, ' and ');

但它不起作用

【问题讨论】:

【参考方案1】:
result = dialog.replace(/,\s(\w+)$/, " and $1");

$1 指的是匹配的第一个捕获组(\w+)

【讨论】:

这对于像'test-1,test-2,test-3'这样的字符串会失败,但我再次相信OP可以自己做出这样的调整。【参考方案2】:
foo.replace(/,([^,]*)$/, ' and $1')

使用$行尾)锚来确定您的位置,并在逗号索引右侧查找不包含任何其他逗号的模式。

编辑:

以上内容完全符合定义的要求(尽管替换字符串是任意松散的),但基于 cmets 的批评,以下内容更好地反映了原始要求的精神。

console.log( 
   'test1, test2, test3'.replace(/,\s([^,]+)$/, ' and $1') 
)

【讨论】:

+1,可能比使用 \w 更好,因为它更具包容性,例如:jsbin.com/utedu/2 这也匹配test1, test2,并为其生成test1, test2 and 。它还为原始输入字符串插入了一个多余的空格字符,因为它忘记匹配, 之后的空格字符。 @splash - 见编辑。如果要求比表达的更详细,我非常有信心 OP 可以自己进行修改,我不想对人们的真正意思做出假设。 我收到Error: unexpected '/' in "foo.replace(/" 我已经根据 regex101 网站上的这个答案制作了一个示例 regex。【参考方案3】:

正则表达式搜索模式 \s([^,]+)$

Line1: If not, sdsdsdsdsa sas ., sad, whaterver4
Line2: If not, fs  sadXD sad ,  ,sadXYZ!X
Line3: If not d,,sds,, sasa sd a, sds, 23233

搜索模式发现 Line1:whaterver4 3号线:​​23233

但没有找到 Line2:sadXYZ!X 只缺少一个空格

【讨论】:

以上是关于如何使用javascript替换字符串中最后出现的字符的主要内容,如果未能解决你的问题,请参考以下文章

如何替换 JavaScript 中所有出现的字符串

如何替换 JavaScript 中所有出现的字符串

如何替换 JavaScript 中所有出现的字符串

如何替换 JavaScript 中所有出现的字符串

如何替换 JavaScript 中所有出现的字符串

如何替换 JavaScript 中所有出现的字符串