मैं सिर्फ String#split
साथ निम्नलिखित अजीब व्यवहार की खोज:विभाजन (') क्यों (स्मार्ट) होने का प्रयास कर रहा है?
"a\tb c\nd".split
=> ["a", "b", "c", "d"]
"a\tb c\nd".split(' ')
=> ["a", "b", "c", "d"]
"a\tb c\nd".split(/ /)
=> ["a\tb", "c\nd"]
The source (2.0.0 से string.c) 200 से अधिक लाइनों लंबा है और इस तरह एक मार्ग शामिल हैं:
/* L 5909 */
else if (rb_enc_asciicompat(enc2) == 1) {
if (RSTRING_LEN(spat) == 1 && RSTRING_PTR(spat)[0] == ' '){
split_type = awk;
}
}
बाद में, awk
विभाजन प्रकार के लिए कोड में, वास्तविक तर्क का भी उपयोग नहीं किया जाता है और यह एक सादा split
के समान है।
- क्या कोई और महसूस करता है कि यह किसी तरह टूटा हुआ है?
- क्या इसके लिए अच्छे कारण हैं?
- क्या ऐसा लगता है कि "जादू" रूबी में ज्यादातर लोगों के विचार से अधिक बार होता है? बाहर documentation
ऐसा कुछ क्यों है जो "बहुत स्मार्ट" है? यह एक इच्छित डिफ़ॉल्ट व्यवहार है जिसे आप ओवरराइड कर सकते हैं यदि आप इसे विभाजित पाठ के लिए उपयोग करने के लिए वैकल्पिक पैटर्न पास करके चुनते हैं। –
बहुत स्मार्ट के साथ मेरा मतलब है रूबी अनुमान है कि मैं सभी सफेद जगहों पर विभाजित करना चाहता हूं, जहां मैं सचमुच इसे रिक्त स्थान पर विभाजित करने के लिए कह रहा हूं। –
मैं इस प्रश्न को बंद करने के लिए वोट देने जा रहा हूं क्योंकि मुझे यह महसूस हो रहा है कि शायद इस प्रश्न का सामान्य, संतोषजनक उत्तर नहीं है। आपके सभी उत्तरों और टिप्पणियों के लिए धन्यवाद! –