16 NİSAN 2009, PERŞEMBE
Ruby belirli bir uzunlukta parçalar halinde bir dize kesmek için en iyi yolu nedir?
Zarif ve verimli bir şekilde Ruby belirli bir uzunlukta dizeleri bir dize parça için aradım.
Şu ana kadar bulabildiğim en iyisi bu
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)
[]
yerine [""]
geri dönmek isteyebilirsiniz. Eğer öyleyse, sadece bu yöntemi ilk satırı olarak ekleyin:
return [""] if string.empty?
Daha iyi bir çözüm önerirsiniz?
Edit
Jeremy sayesinde modern ve verimli bu çözüm için Ruten:
def chunk(string, size)
string.scan(/.{1,#{size}}/)
end
CEVAP
16 NİSAN 2009, PERŞEMBE
Kullanım String#scan
:
>> 'abcdefghijklmnopqrstuvwxyz'.scan(/.{4}/)
=> ["abcd", "efgh", "ijkl", "mnop", "qrst", "uvwx"]
>> 'abcdefghijklmnopqrstuvwxyz'.scan(/.{1,4}/)
=> ["abcd", "efgh", "ijkl", "mnop", "qrst", "uvwx", "yz"]
>> 'abcdefghijklmnopqrstuvwxyz'.scan(/.{1,3}/)
=> ["abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "yz"]
Bunu Paylaş:
Yeni bir dize oluşturmadan Ruby bir di...
Objective-C boş bir dize kontrol etmek...
Bir dizi ilk öğe kaldırmak için en kol...
Bir toplu iş dosyasında bir dize yapma...
Dize bayt dizisi dönüştürmek için en i...