कोड '////'.split('/')
परिणाम []
में परिणाम। जबकि मुझे उम्मीद है कि यह ['', '', '', '', '']
होगा। यदि यह रूबी की एक विशेषता है, तो ऐसा क्यों डिज़ाइन किया गया है?'////'.split('/') क्यों उत्पादन करता है []?
उत्तर
यह डिज़ाइन पिछली डिलीमीटर के साथ तारों को पार्स करने की सुविधा प्रदान करता है। उदाहरण के लिए:
'1␣2␣3␣␣'.split('␣')
अब ['1', '2', '3', '', '']
के बजाय ['1', '2', '3']
दे देंगे।
यह सुविधा केवल वर्कफ़्लो के सरलीकरण के लिए है।
हालांकि, मुझे यह सुविधा पसंद नहीं है क्योंकि यह इस विधि की शुद्धता को तोड़ती है। उपरोक्त प्रभाव को प्राप्त करने के लिए, आपको '1␣2␣3␣␣'
और split('␣')
के बीच अतिरिक्त rstrip('␣')
की आवश्यकता है।
'('␣') 'प्यारा लग रहा है। –
आप डेलीमीटर द्वारा डिलीमीटरों की स्ट्रिंग को विभाजित नहीं कर सकते हैं।
आप समारोह विभाजित करने के लिए इस व्यवहार
'////'.split('/',-1)
=>
["", "", "", "", ""]
प्राप्त करने के लिए सीमा पैरामीटर शामिल न करने पर दूसरा पैरामीटर के रूप में सीमा पास करना चाहिए अनुगामी रिक्त क्षेत्रों को दबा दिया जाता है। यदि सीमा एक सकारात्मक संख्या है, तो अधिकतर फ़ील्ड लौटा दी जाएंगी (यदि सीमा 1 है, तो संपूर्ण स्ट्रिंग को सरणी में एकमात्र प्रविष्टि के रूप में वापस कर दिया जाता है)। यदि ऋणात्मक है, तो लौटाए गए फ़ील्ड की संख्या की कोई सीमा नहीं है, और पीछे के नल फ़ील्ड को दबाया नहीं जाता है
* + 1 * .. मैंने किया ... :) लेकिन आप [डॉक्टर] से http://www.ruby-doc.org/core-2.0.0/String.html#method-i- विभाजित) जैसे - ** यदि सीमा पैरामीटर छोड़ा गया है, तो पीछे वाले क्षेत्रों को पीछे छोड़ दिया जाता है **। यदि सीमा एक सकारात्मक संख्या है, तो अधिकतर फ़ील्ड लौटा दी जाएंगी (यदि सीमा 1 है, तो संपूर्ण स्ट्रिंग को सरणी में एकमात्र प्रविष्टि के रूप में वापस कर दिया जाता है)। ** यदि ऋणात्मक है, तो लौटाए गए फ़ील्ड की संख्या की कोई सीमा नहीं है, और पीछे के नल फ़ील्ड को दबाया नहीं जाता है। ** –
धन्यवाद। वास्तव में उपयोगी टिप्पणी। – SergeyKutsko
split
विधि के व्यवहार की जांच से पता चलता है कि यह अनुकूलन का परिणाम है, यह केवल अंतिम मैच के बाद रिक्त सरणी तत्वों को फसल करता है नीचे दिखाया गया है:
'////'.split('/')
=> []
'//a//'.split('/')
=> ["", "", "a"]
- 1. ARRAYFORMULA() SPLIT()
- 2. उलझन में कैसे जावास्क्रिप्ट में काम करता है .split() जावा
- 3. .split() IE8
- 4. .Split ("//") भी उठा रहा है "/"
- 5. _mm_stream_ps एल 1/एलएल कैश का उत्पादन क्यों करता है?
- 6. स्टाइलशीट_लिंक_टैग उत्पादन में/संपत्ति से लिंक क्यों नहीं करता है?
- 7. एएसपीनेट एमवीसी मॉडल बाइंडर सिस्टम.स्ट्रिंग का उत्पादन क्यों करता है []
- 8. क्यों विरासत उत्पादन अप्रत्याशित है
- 9. करता कहाँ रेल लॉगिंग उत्पादन
- 10. क्यों subprocess.Popen काम नहीं करता है जब तर्क अनुक्रम है?
- 11. क्यों __unicode__ काम नहीं करता है लेकिन __str__ करता है?
- 12. * क्यों करता है * मैच करता है?
- 13. यह आउटपुट 8 क्यों करता है?
- 14. बी बी शून्य होने पर एसआईजीएफपीई का उत्पादन क्यों करता है?
- 15. यह हास्केल कोड "अनंत प्रकार" त्रुटि का उत्पादन क्यों करता है?
- 16. जावास्क्रिप्ट स्ट्रिंग और अक्षर के लिए ++ के साथ अलग-अलग त्रुटियों का उत्पादन क्यों करता है?
- 17. ग्रहण मेवेन किसी भी कारण से बड़ी .cfs फ़ाइलों का उत्पादन क्यों करता है?
- 18. क्रोम (.1) .toString (3) के लिए डॉट के बाद 1099 अंकों का उत्पादन क्यों करता है?
- 19. यह सरल CoreMIDI प्रोग्राम MIDI आउटपुट का उत्पादन क्यों नहीं करता है?
- 20. Log4Net उत्पादन में लॉग फ़ाइल क्यों नहीं बना रहा है?
- 21. csh में, क्यों 4 करता है?
- 22. रेल बंडल केवल उत्पादन उत्पादन
- 23. नियमित रूप से os.path.splitext के लाभ .split पर?
- 24. Grails 2 - JSON उत्पादन स्वचालित रूप से उत्पादन (स्प्रिंग 3.x की तरह करता है)
- 25. यूआरएल.एक्शन पूर्ण यूआरएल उत्पादन करने के लिए क्वेरीस्ट्रिंग का उत्पादन करता है?
- 26. dos2unix stderr पर प्रिंट क्यों करता है?
- 27. यह बचाव वाक्यविन्यास क्यों काम करता है?
- 28. उत्पादन
- 29. jQuery AJAX 304 प्रतिक्रियाओं का उत्पादन करता है जब यह
- 30. xcodebuild चेतावनी और त्रुटियों का उत्पादन नहीं करता है?
+1 .. एक अच्छा सवाल पूछने के लिए ... :) –
हालांकि सवाल दिलचस्प है, यह सबसे अच्छा रूप में नहीं है जिसे पूछा जा सकता था। आपका प्रश्न पाठक को गुमराह कर सकता है कि इस प्रभाव के लिए लगातार चार स्लेश महत्वपूर्ण हैं, लेकिन ऐसा नहीं है। आपको छोटे स्लैश अनुक्रम के साथ एक ही परिणाम मिल जाएगा। – sawa