如何使用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替换字符串中最后出现的字符的主要内容,如果未能解决你的问题,请参考以下文章