2012-09-03 16 views
32

जावास्क्रिप्ट के सापेक्ष नवागंतुक और एक कोलन के अंतिम अक्षर को हटाने के लिए एक रास्ता तलाश रहे हैं।जावास्क्रिप्ट: आखिरी वर्ण हटाएं यदि एक कोलन

मुझे पता है myString = myString.replace('/^\\:/'); लाइन की शुरुआत के लिए काम करेगा, लेकिन यह सुनिश्चित नहीं है कि $ चरित्र में एक पंक्ति के अंत में बदलने के लिए कैसे स्वैप करें ... क्या कोई इसे सही कर सकता है?

धन्यवाद

उत्तर

61

नियमित अभिव्यक्ति शाब्दिक (/.../) एक स्ट्रिंग में नहीं होना चाहिए। स्ट्रिंग की शुरुआत में पेट के दूर करने के लिए अपने कोड को ठीक, आपको मिलता है:

myString = myString.replace(/^\:/, ''); 

स्ट्रिंग के अंत में पेट से मेल करने के लिए, यह पहले ^ के बजाय कोलन के बाद $ डाल:

myString = myString.replace(/\:$/, ''); 

भी कर सकते हैं यह सादे स्ट्रिंग आपरेशन का उपयोग कर कार्य करें:

if (myString.charAt(myString.length - 1) == ':') { 
    myString = myString.substr(0, myString.length - 1); 
} 
+0

विस्तृत उत्तर के लिए धन्यवाद। एक नवागंतुक के रूप में, मैं बैकस्लैश का उपयोग बचने वाले चरित्र के रूप में करने के बारे में समझता हूं लेकिन 'प्रतिस्थापन' कथन में कई अग्रेषित/बैकस्लैश क्यों हैं? – neil

+0

@neilf: slahses '/.../' नियमित अभिव्यक्ति शाब्दिक है। नियमित अभिव्यक्ति के अंदर कोलन चरित्र से बचने के लिए बैकस्लैश होता है, ताकि इसे शाब्दिक चरित्र के रूप में व्याख्या किया जा सके और अभिव्यक्ति में इसका कोई विशेष अर्थ न हो। (मैंने ऊपर दिए गए कोड को सही किया है, इसे स्ट्रिंग में रखने के लिए पैटर्न से बचने के लिए डबल बैकस्लाश था, यानी 'नया रेगेक्स ('^\\: ')', आपका मूल कोड रेगेक्स शाब्दिक और एक के बीच कुछ प्रकार का मिश्रण था regex स्ट्रिंग।) – Guffa

+0

मुझे '/.../' प्रारूप के बारे में पता नहीं था, केवल बैकस्लैश - समझाए जाने के लिए धन्यवाद। – neil

16

myString = myString.replace(/:$/, ''); 

इस के साथ बस की कोशिश : निकाल देंगे जब यह स्ट्रिंग

+0

आह, मैं यह अंत में था, लेकिन बहुत से स्लैश ... बहुत धन्यवाद – neil

0

$ जरूरतों regex EOL मैच के लिए के अंत में होने की के अंत में है।

/:$/

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