मैं रुबी में दी गई लंबाई के सबस्ट्रिंग्स में एक स्ट्रिंग को जोड़ने के लिए एक सुरुचिपूर्ण और कुशल तरीका ढूंढ रहा हूं।रुबी में दी गई लंबाई के टुकड़ों में स्ट्रिंग को काटने का सबसे अच्छा तरीका क्या है?
def chunk(string, size)
(0..(string.length-1)/size).map{|i|string[i*size,size]}
end
>> chunk("abcdef",3)
=> ["abc", "def"]
>> chunk("abcde",3)
=> ["abc", "de"]
>> chunk("abc",3)
=> ["abc"]
>> chunk("ab",3)
=> ["ab"]
>> chunk("",3)
=> []
आप chunk("", n)
चाहते हो सकता है [""]
बजाय []
वापस जाने के लिए:
अब तक सबसे अच्छा मैं के साथ आ सकता है यह है। यदि ऐसा है, तो बस इसे विधि की पहली पंक्ति के रूप में जोड़ें:
return [""] if string.empty?
क्या आप किसी बेहतर समाधान की अनुशंसा करेंगे? इस सुरुचिपूर्ण और कुशल समाधान के लिए जेरेमी Ruten को
संपादित
धन्यवाद:
def chunk(string, size)
string.scan(/.{1,#{size}}/)
end
ठीक है, अब यह उत्कृष्ट है! मुझे पता था कि एक बेहतर तरीका होना चाहिए था। बहुत धन्यवाद जेरेमी रूटेन। – MiniQuark
डीफ़ खंड (स्ट्रिंग, आकार); string.scan (/ {1, # {आकार}} /।); अंत – MiniQuark
वाह, अब मुझे बेवकूफ लगता है। स्कैन कैसे काम करता है यह जांचने के लिए मैंने कभी भी परेशान नहीं किया है। – Chuck