2010-08-02 16 views
13

मैं जावास्क्रिप्ट में एक ट्रिम फ़ंक्शन ढूंढ रहा था जो मौजूद नहीं है और गूगलिंग पर कुछ कोड बताते हैं कि इसका उपयोग करें:जावास्क्रिप्ट में ट्रिम करें? यह कोड क्या कर रहा है?

function trimStr(str) { 
    return str.replace(/^\s+|\s+$/g, ''); 
} 

मैं जानना चाहता हूं कि str.replace(/^\s+|\s+$/g, '') कैसे काम करता है। मैं समझता हूं कि यह नियमित अभिव्यक्ति का कुछ रूप है लेकिन यह नहीं जानता कि यह क्या कर रहा है।

उत्तर

30

/^\s+|\s+$/g या तो शुरुआत या स्ट्रिंग के अंत से व्हाइटस्पेस की खोज करता है। अभिव्यक्ति को दो भागों में विभाजित किया जा सकता है, ^\s+ और \s+$ जो | (OR) से अलग होते हैं। पहला भाग स्ट्रिंग (^) की शुरुआत से शुरू होता है और इसमें कई व्हाइटस्पेस वर्ण भी शामिल हो सकते हैं (\s+)। दूसरा भाग वही करता है लेकिन डॉलर के चिह्न ($) का उपयोग करके अंत में और अंत में।

सादे अंग्रेजी में, नियमित अभिव्यक्ति इस तरह जाना होगा:

संभव के रूप में अंत से संभव के रूप में कई या खाली स्थान के पात्रों के रूप में स्ट्रिंग की शुरुआत से ही कई खाली स्थान के पात्रों का पता लगाएं।

ध्यान दें कि \s मैचों की रिक्त स्थान, टैब और लाइन ब्रेक।

/g अंत में हिस्सा वैश्विक खोज को सक्षम बनाता है, जो एकाधिक प्रतिस्थापन (उदाहरण के लिए नहीं, बल्कि स्ट्रिंग का अंत भी) देता है।

+0

को छोड़कर सबकुछ मिला/जी।क्या आप इसके बारे में अधिक स्पष्टीकरण दे सकते हैं कि –

+0

मैं उलझन में हूं "अंत में जी भाग वैश्विक खोज को सक्षम बनाता है" हमें इसकी आवश्यकता क्यों है। चूंकि हम स्ट्रिंग –

+5

@ सुशील की शुरुआत और अंत के लिए पहले से ही शर्त शामिल कर चुके हैं, यहां वैश्विक ध्वज का अर्थ है कि एक से अधिक प्रतिस्थापन हो सकते हैं। इसके बिना, यह केवल पहले मैच को प्रतिस्थापित करेगा। उदाहरण के लिए। '" foo ".replace (/^\ s + | \ s + $ /," ") '(कोई वैश्विक नहीं)' foo "' –

4

^ स्ट्रिंग की शुरुआत है, और $ अंत है। \s का अर्थ है एक व्हाइटस्पेस वर्ण (जो जावास्क्रिप्ट में विशेष रूप से टैब, लंबवत टैब, फॉर्म फ़ीड, स्पेस, गैर-ब्रेक स्पेस, बाइट ऑर्डर मार्क, यूनिकोड स्पेस सेपरेटर (श्रेणी जेड), लाइन फीड, कैरिज रिटर्न, लाइन सेपरेटर, या पैराग्राफ सेपरेटर का मतलब है), और + का मतलब 1 या अधिक है। | विकल्प है, दो संभावनाओं के बीच एक विकल्प है। g वैश्विक ध्वज है। तो रेगेक्स का मतलब है शुरुआत, फिर एक या अधिक सफेद जगह, या एक या अधिक सफेद जगह, फिर अंत। फिर, हम खाली स्ट्रिंग के साथ सभी मैचों (क्योंकि यह वैश्विक है) को प्रतिस्थापित करते हैं।

आपको इस blog post में रुचि हो सकती है, जो आपको शायद अधिक आवश्यकता में विश्लेषण करता है :) विभिन्न ट्रिम कार्यों के पेशेवरों और विपक्ष।

+1

'\ s' का मतलब अंतरिक्ष से अधिक है (इसका मतलब व्हाइटस्पेस है)। जेएस में इसमें अक्षर '[\ r \ n \ t] 'शामिल हैं। –

+2

@ एंडी, धन्यवाद, मैं वास्तव में इसके बारे में जानता था, लेकिन इसे अच्छी तरह से वाक्यांश नहीं दिया। मेरा मतलब यह नहीं था कि यह केवल ASCII 0x20 (वास्तविक स्थान) था। मैंने स्पष्ट किया है; यह वास्तव में आपके मुकाबले कई और पात्र हैं। –

+0

आगे स्पष्टीकरण के लिए अच्छी तरह से किया गया, मैंने अभी उन पात्रों को शामिल किया जिनके बारे में मुझे पूरी तरह से यकीन था। आपको पता होना चाहिए कि, '' s' केवल ईएमएमए -262 5 वें संस्करण के रूप में बीओएम से मेल खाने के लिए निर्दिष्ट है (इसे तीसरे संस्करण में शामिल नहीं किया गया था)। साथ ही, इंटरनेट एक्सप्लोरर में संस्करण 8 तक, '\ s' से मेल खाने वाले सटीक वर्ण' [\ f \ n \ r \ t \ v] 'के बराबर हैं - इसलिए आपकी सूची पूर्ण क्रॉस- ब्राउज़र संगतता। –

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