SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006
  • jpmkm1

    jpmkm1

    4 NİSAN 2008
  • PremiumBeat.com - Royalty Free Music

    PremiumBeat.

    16 Kasım 2008