使用正则表达式替换最后一个逗号分隔的值为另一个值

4

我有一个字符串如下:

var str = "a,b,c,a,e,f"; 

我需要的是将最后一个逗号分隔的元素替换为另一个元素。
ie, str = "a,b,c,a,e,anystring"; 

我已经使用 split 方法并将其添加到新字符串中进行了尝试,但结果并不如预期。

我的操作如下:

var str = "a,b,c,d,e,f";

var arr = str.split(',');

var res = str.replace(arr[5], "z");
alert(res);

有没有正则表达式可以帮忙?
2个回答

10

您可以使用正则表达式/,[^,]+$/replace()一起使用,以匹配最后一个字符串。

var str = "a,b,c,d,e,old";
var res = str.replace(/,[^,]+$/, ",new");
// or you can just use
// var res = str.replace(/[^,]+$/, "new");
document.write(res);

正则表达式可视化


或者你可以直接使用正则表达式 str.replace(/[^,]+$/, "new");

var str = "a,b,c,d,e,old";
var res = str.replace(/[^,]+$/, "new");
document.write(res);


或使用 split() 方法,将最后一项替换为新字符串,然后再使用 join() 方法重新连接数组。

var str = "a,b,c,d,e,old";
var arr = str.split(',');
arr[arr.length - 1] = 'new';
var res = arr.join(',');
document.write(res);


2
您可以使用 String.lastIndexOf()String.substring() 方法来实现:
function replaceStartingAtLastComma(str, rep){
  return str.substring(0, (str.lastIndexOf(',')+1))+rep;
}
console.log(replaceStartingAtLastComma('a,b,c,d,e,f', 'Now this is f'));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接