2011-11-15 13 views
24

जावास्क्रिप्ट में, मैं सही ट्रिम कैसे करूं?जावास्क्रिप्ट को सही ट्रिम करने की आवश्यकता है

मैं निम्नलिखित है:

var s1 = "this is a test~"; 

    var s = s1.rtrim('~') 

लेकिन सफल

+0

Google पर शीर्ष हिट: http://blog.stevenlevithan.com/archives/faster-trim-javascript – Tessmore

उत्तर

57

एक रेगुलर एक्सप्रेशन का उपयोग नहीं किया गया। विशेष पात्रों से बचने के लिए मत भूलना।

s1 = s1.replace(/~+$/, ''); //$ marks the end of a string 
          // ~+$ means: all ~ characters at the end of a string 
+0

बिल्कुल सही, धन्यवाद! –

2

एक समाधान रेगुलर एक्सप्रेशन के उपयोग:

"hi there~".replace(/~*$/, "") 
2

कोई ट्रिम, ltrim, या Javascript में rtrim कार्यों रहे हैं। कई पुस्तकालयों उन्हें प्रदान करते हैं लेकिन आम तौर पर वे कुछ ऐसी दिखाई देगी:

str.replace(/~*$/, ''); 

सही ट्रिम्स के लिए, निम्न आम तौर पर की वजह से एक regex की तुलना में तेजी है कैसे regex अधिकांश ब्राउज़र में अंत पात्रों के साथ सौदों:

function rtrim(str, ch) 
{ 
    for (i = str.length - 1; i >= 0; i--) 
    { 
     if (ch != str.charAt(i)) 
     { 
      str = str.substring(0, i + 1); 
      break; 
     } 
    } 
    return str; 
} 
5

यदि आप चाहें तो स्ट्रिंग प्रोटोटाइप को संशोधित कर सकते हैं। स्ट्रिंग प्रोटोटाइप को संशोधित करना आम तौर पर फहराया जाता है, लेकिन मैं व्यक्तिगत रूप से इस विधि को प्राथमिकता देता हूं, क्योंकि यह कोड क्लीनर IMHO बनाता है।

String.prototype.rtrim = function(s) { 
    return this.replace(new RegExp(s + "*$"),''); 
}; 

फिर फोन ...

var s1 = "this is a test~"; 
var s = s1.rtrim('~'); 
alert(s); 
-1

यह पुराना है, मुझे पता है। लेकिन मुझे नहीं लगता कि सबस्ट्र के साथ क्या गलत है ...?

function rtrim(str, length) { 
    return str.substr(0, str.length - length); 
} 
+0

यहां एकमात्र समस्या यह है कि स्ट्रिंग के अंत में कोई भी वर्ण हो सकता है ... 'यह परीक्षण है' के बजाय कहें ~ 'यह परीक्षण है ~~~ 'या यहां तक ​​कि कोई भी नहीं' test'। यद्यपि चरित्र क्या हो सकता है, इस पर ध्यान दिए बिना, आपका केस स्ट्रिंग से वर्णों की एक निश्चित संख्या को ट्रिम करने के लिए अच्छी तरह से काम करता है – bobkingof12vs

1

IMO यह एक दाएँ/बाएँ ट्रिम और इसलिए करने के लिए सबसे अच्छा तरीका है, काट-छाँट के लिए एक पूर्ण कार्यक्षमता चल रहा है (क्योंकि जावास्क्रिप्ट string.trim का समर्थन करता है मूल रूप से)

String.prototype.rtrim = function (s) { 
    if (s == undefined) 
     s = '\\s'; 
    return this.replace(new RegExp("[" + s + "]*$"), ''); 
}; 
String.prototype.ltrim = function (s) { 
    if (s == undefined) 
     s = '\\s'; 
    return this.replace(new RegExp("^[" + s + "]*"), ''); 
}; 

प्रयोग उदाहरण:

var str1 = ' jav ' 
var r1 = mystring.trim();  // result = 'jav' 
var r2 = mystring.rtrim();  // result = ' jav' 
var r3 = mystring.rtrim(' v'); // result = ' ja' 
var r4 = mystring.ltrim();  // result = 'jav ' 
संबंधित मुद्दे