2011-03-31 145 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'

的「_」可以與要替換

焦炭,換出與

相關問題