2011-03-31 4 views
47

में वर्ण की अंतिम घटना को बदलें किसी दिए गए स्ट्रिंग में '_' (अंडरस्कोर) की अंतिम घटना को प्रतिस्थापित करने के लिए jQuery में कोई आसान तरीका है?स्ट्रिंग

+0

क्या यह हमेशा स्ट्रिंग का अंतिम अक्षर है? यदि नहीं, तो string.lastIndexOf (searchstring, प्रारंभ करें) पर एक नज़र डालें – skarmats

+0

[आपको jQuery की आवश्यकता नहीं है] (http://meta.stackexchange.com/questions/45176/when-is-use-jquery-not-a -valid-जवाब करने के लिए एक-जावास्क्रिप्ट-प्रश्न)। – zzzzBov

+0

संभावित डुप्लिकेट [जावास्क्रिप्ट का उपयोग कर स्ट्रिंग में वर्णों की अंतिम घटना को कैसे प्रतिस्थापित करें] (http://stackoverflow.com/questions/3829483/how-to-replace-last-occurrence-of-characters-in-a-string -उजिंग-जावास्क्रिप्ट) –

उत्तर

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 हर्टिगर्कर :)) – mplungjan

+2

@ मार्टिन जेस्परसेन: क्या होगा यदि पाठ को प्रतिस्थापित किया जाए तो अंडरस्कोर नहीं है बल्कि प्रतिस्थापन की सामग्री को प्रतिस्थापित किया जाता है? रेगेक्स को कैसे संशोधित किया जाना चाहिए? – Pierpaolo

+1

@Pierpaolo: आपको 'new RegExp' का उपयोग करके regexp बनाना होगा, इसके बारे में सब कुछ यहां पढ़ें: https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions - भागने के लिए याद रखें 'replaceMe' वैरिएबल में इसमें विशेष वर्ण नहीं हैं जो नियमित अभिव्यक्ति –

47

है और न ही jQuery के लिए कोई ज़रूरत नहीं regex

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 की आवश्यकता नहीं है" के लिए +1। यह जानना महत्वपूर्ण है कि JQuery सब कुछ का जवाब नहीं है।जावास्क्रिप्ट jquery के माध्यम से सब कुछ धक्का देने के बिना एक पूरी तरह से सक्षम प्रोग्रामिंग भाषा है। – Spudley

+1

@Spudley तो सच है। हालांकि यहां SO पर, कोई जेएस उत्तर jQuery संस्करण के बिना पूरा नहीं हुआ है;)) – mplungjan

+3

'+ 1' * के लिए कोई regex * & ***' lastIndexOf (...) 'END से खोज करता है *** (बेहतर प्रदर्शन) तो वर्तमान में स्वीकृत regexp भी * तेजी से नहीं हो सकता है। –

1

स्ट्रिंग रिवर्स, चार की जगह, स्ट्रिंग रिवर्स।

यहाँ जावास्क्रिप्ट में एक स्ट्रिंग को पलटने के लिए एक पोस्ट है: How do you reverse a string in place in JavaScript?

+1

से बचने की ज़रूरत है, मैंने सोचा था, लेकिन फिर अंतिम इंडेक्स पर वापस लौटने की तुलना में थोड़ा बेंचमार्क चलाया: http://jsperf.com/replace-last – fakewaffle

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'

'_' बाहर आप

बदलना चाहते हैं चार और साथ बदली जा सकती है

संबंधित मुद्दे