2011-03-31 168 views
47

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

+0

它总是字符串的最后一个字符?如果没有,看看string.lastIndexOf(searchstring,start) – skarmats 2011-03-31 08:56:14

+0

[你不需要jQuery](http://meta.stackexchange.com/questions/45176/when-is-use-jquery-not-a - 有效应答对A-JavaScript的问题)。 – zzzzBov 2013-02-19 22:41:28

+0

[如何用javascript替换字符串中最后出现的字符]可能的重复(http://stackoverflow.com/questions/3829483/how-to-replace-last-occurrence-of-characters-in-a-string -using-javascript) – 2014-09-04 05:41:22

回答

91

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

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

var str = 'a_b_c'; 
str = str.replace(/_([^_]*)$/,'$1'); //a_bc 

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

var str = 'a_b_c', replacement = '!'; 
str = str.replace(/_([^_]*)$/,replacement+'$1'); //a_b!c 
+1

+1 Hurtigkarl :))) – mplungjan 2011-03-31 08:56:49

+2

@Martin Jespersen:如果要替换的文本不是下划线而是一个名为replaceMe的变量的内容会怎样? 正则表达式应该如何修改? – Pierpaolo 2012-12-18 10:07:30

+1

@Pierpaolo:您必须使用“new RegExp”创建正则表达式,请在此处阅读全部内容:https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions - 记住要逃脱'replaceMe'变量,因此它不包含将改变正则表达式的特殊字符 – 2012-12-18 18:38:00

47

无需jQuery的也正则表达式

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

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

var pos = str.lastIndexOf('_'); 
str = str.substring(0,pos) + otherchar + str.substring(pos+1) 

,以取代过去的下划线

或使用正则表达式,你会之一从某人得到一分钟:)

+4

+1表示“不需要jQuery”。重要的是要知道,不是JQuery不是一切的答案。Javascript是一个完美的编程语言,无需通过jquery推送所有内容。 – Spudley 2011-03-31 08:57:33

+1

@Spudley如此真实。但是在这里,没有JS的答案没有jQuery版本;)) – mplungjan 2011-03-31 08:58:22

+3

'+ 1' for * no regex *&***'lastIndexOf(...)'从END查找***性能),所以当前接受的正则表达式even *不能更快。 – 2016-09-23 13:22:48

0

保持简单

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

var newString = someString.substring(0, someString.lastIndexOf('_')) + newCharacter + someString.substring(someString.lastIndexOf('_')+1); 
0

您可以使用此代码

var str="test_String_ABC"; 
 
var strReplacedWith=" and "; 
 
var currentIndex = str.lastIndexOf("_"); 
 
str = str.substring(0, currentIndex) + strReplacedWith + str.substring(currentIndex + 1, str.length); 
 

 
alert(str);

3

什么这个?

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

replaceLast("Hello world!", "l", "x"); // Hello worxd! 
0

这是非常相似的mplungjan的答案,但可以更容易一点(特别是如果你需要后立即做其他的字符串操作,并希望保持它作为一个数组) 无论如何,我只是觉得我”把它放在那里以防有人喜欢它。 “ - ”可你要替换它的字符或字符串替换

var str = 'a_b_c'; 
 
str = str.split(''); //['a','_','b','_','c'] 
 
str.splice(str.lastIndexOf('_'),1,'-'); //['a','_','b','-','c'] 
 
str = str.join(''); //'a_b-c'

的“_”可以与要替换

焦炭,换出与

相关问题