11

我想用 . 替换,字符串中逗号 ()的最后一个索引and

例如。a,b,c'a,b and c'

例如 q,w,eq,w and e

4

5 回答 5

13

演示

lastIndexOf查找传入的参数字符串的最后一个索引。

var x = 'a,b,c';
var pos = x.lastIndexOf(',');
x = x.substring(0,pos)+' and '+x.substring(pos+1);
console.log(x);

你也可以使用这个功能

function replace_last_comma_with_and(x) {
    var pos = x.lastIndexOf(',');
    return x.substring(0, pos) + ' and ' + x.substring(pos + 1);
}
console.log(replace_last_comma_with_and('a,b,c,d'));

使用正则表达式的替代解决方案:

function replaceLastCommaWith(x, y) {
  return x.replace(/,(?=[^,]*$)/, " " + y + " ");
}
console.log(replaceLastCommaWith("a,b,c,d", "and")); //a,b,c and d
console.log(replaceLastCommaWith("a,b,c,d", "or")); //a,b,c or d
于 2013-08-01T05:53:27.977 回答
8

这个正则表达式应该可以完成工作

"a,b,c,d".replace(/(.*),(.*)$/, "$1 and $2")
于 2013-08-01T05:54:55.570 回答
2

尝试以下

var x= 'a,b,c,d';
x = x.replace(/,([^,]*)$/, " and $1");
于 2013-08-01T05:57:34.160 回答
0

尝试

var str = 'a,b,c', replacement = ' and ';
str = str.replace(/,([^,]*)$/,replacement+'$1'); 

alert(str)

小提琴演示

于 2013-08-01T05:58:06.373 回答
0

一个简单的循环将帮助你

首先在你的字符串中找到 all 的索引,

var str = "a,b,c,d,e";
var indices = [];
for(var i=0; i<str.length;i++) {
    if (str[i] === ",") indices.push(i);
}


indices = [1,3,5,7] as it start from 0

len = indices.length()
str[indices[len - 1]] = '.'

这将解决您的目的。

于 2013-08-01T05:58:26.850 回答