8
在Ruby中将字符串切成给定长度的块的最佳方法是什么?
我一直在寻找一种优雅而有效的方法来在Ruby中将字符串分块为给定长度的子字符串。 到目前为止,我能想到的最好的方法是: 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? 您会提出更好的解决方案吗? 编辑 感谢Jeremy Ruten提供的这种优雅而有效的解决方案:[编辑:效率不高!] def chunk(string, size) string.scan(/.{1,#{size}}/) end 编辑 string.scan解决方案大约需要60秒才能将512k砍成1k块10000次,而原始的基于切片的解决方案只需要2.4秒。