2013-05-22 4 views
5

क्या जावास्क्रिप्ट रेगेक्स को नल मैचों को अस्वीकार करना संभव है?जावास्क्रिप्ट रेगेक्स स्प्लिट शून्य को अस्वीकार करें

क्या स्ट्रिंग.split() विधि को शून्य मानों को अस्वीकार करने के लिए कहा जा सकता है?

console.log("abcccab".split("c")); 
//result: ["ab", "", "", "ab"] 
//desired result: ["ab", "ab"] 

-

जब मैं इस मैं दुर्घटना पर एक आंशिक जवाब में आए परीक्षण किया गया था:

console.log("abccacaab".split(/c+/)); 
//returns: ["ab", "a", "aab"] 

लेकिन, कोई समस्या उत्पन्न जब मैच शुरू में है:

console.log("abccacaab".split(/a+/)); 
//returns: ["", "bcc", "c", "b"] 
//   ^^ 

क्या कोई साफ जवाब है? या क्या हमें बस इससे निपटना है?

+0

कैसे 'c' छोड़कर पात्रों में से सभी दृश्यों मिलान के बारे में? – Gumbo

+0

@nathanhayfield यही है कि मैं – Isaac

उत्तर

22

यह एक रेगेक्स समाधान नहीं है, लेकिन एक फ़िल्टर इसका त्वरित काम करेगा।

"abcccab".split("c").filter(Boolean); 

यह झूठी "" मानों को फ़िल्टर करेगा।

+0

से बचने के लिए चाहता हूं अच्छा और साफ, मैं यही कर रहा हूं, धन्यवाद – Isaac

+0

आपका स्वागत है। –

+0

मुझे लगता है कि मैं आपके सभी प्रतिनिधि चोरी कर रहा हूं! http://stackoverflow.com/questions/19888689/remove-empty-strings-from-array-while-keeping-record-without-loop/19888749#19888749 – Isaac

1

स्ट्रिंग के छोर से मेल खाता है ट्रिम इससे पहले कि आप विभाजित:

console.log("abccacaab".replace(/^a+|a+$/g, '').split(/a+/)); 

// ["bcc", "c", "b"] 
+0

यह अच्छा है, स्क्वांट के जवाब के रूप में साफ नहीं है, हालांकि – Isaac

+0

@ नहीं, मैंने इसे यहां छोड़ा क्योंकि आपने नाथनहेफील्ड को बताया था कि आप सरणी के माध्यम से पुनरावृत्ति से बचने और खाली तारों को हटाने से बचाना चाहते हैं, जो फिल्टर करता है। – Paulpro

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