替换字符串中最后出现的字符

CLi*_*own 65 javascript jquery

在jQuery中有一种简单的方法可以替换给定字符串中最后一次出现的'_'(下划线)吗?

Mar*_*sen 118

你不需要jQuery,只需要一个正则表达式.

这将删除最后一个下划线:

var str = 'a_b_c';
console.log(  str.replace(/_([^_]*)$/, '$1')  ) //a_bc
Run Code Online (Sandbox Code Playgroud)

这将用变量的内容替换它replacement:

var str = 'a_b_c',
    replacement = '!';

console.log(  str.replace(/_([^_]*)$/, replacement + '$1')  ) //a_b!c
Run Code Online (Sandbox Code Playgroud)

  • @Martin Jespersen:如果要替换的文本不是下划线而是名为replaceMe的变量的内容怎么办?如何修改正则表达式? (2认同)

mpl*_*jan 65

不需要jQuery也不需要正则表达式

替换字符串中的最后一个字符

str = str.substring(0,str.length-2)+otherchar

替换字符串中的最后一个字符

var pos = str.lastIndexOf('_');
str = str.substring(0,pos) + otherchar + str.substring(pos+1)
Run Code Online (Sandbox Code Playgroud)

或者使用其他答案中的一个正则表达式

  • +1"不需要jQuery".重要的是要知道不是JQuery不是一切的答案.Javascript是一种功能完善的编程语言,无需通过jquery推送所有内容. (6认同)
  • `+ 1` for*no regex*&***`lastIndexOf(...)`从END***(更好的性能)进行搜索,因此当前接受的regexp甚至*不能*更快. (4认同)

ten*_*sai 8

另一种非常清晰的方法如下:

let modifiedString = originalString
   .split('').reverse().join('')
   .replace('_', '')
   .split('').reverse().join('')
Run Code Online (Sandbox Code Playgroud)


Har*_*ens 6

那这个呢?

function replaceLast(x, y, z){
  var a = x.split("");
  a[x.lastIndexOf(y)] = z;
  return a.join("");
}

replaceLast("Hello world!", "l", "x"); // Hello worxd!
Run Code Online (Sandbox Code Playgroud)


Din*_*rma 5

把事情简单化

var someString = "a_b_c";
var newCharacter = "+";

var newString = someString.substring(0, someString.lastIndexOf('_')) + newCharacter + someString.substring(someString.lastIndexOf('_')+1);
Run Code Online (Sandbox Code Playgroud)