Ruby 如何拆分n个子字符串中的字符串?
我从ruby开始,我遇到了一个问题。 我想将一个字符串拆分为多个子字符串 例如,我有以下字符串:Ruby 如何拆分n个子字符串中的字符串?,ruby,Ruby,我从ruby开始,我遇到了一个问题。 我想将一个字符串拆分为多个子字符串 例如,我有以下字符串: str = "a9547e" 我想把它分成两个子串,三个字符,或者三个子串,两个字符。我得到了这样的东西: str = ["a9","54","7e"] str = ["a94","47e"] 我尝试了不同的方法,但没有任何效果。我不确定我是否完全理解其意图,但是像这样的方法怎么样 def string_splitter(str,group_length) str.each_char.ea
str = "a9547e"
我想把它分成两个子串,三个字符,或者三个子串,两个字符。我得到了这样的东西:
str = ["a9","54","7e"]
str = ["a94","47e"]
我尝试了不同的方法,但没有任何效果。我不确定我是否完全理解其意图,但是像这样的方法怎么样
def string_splitter(str,group_length)
str.each_char.each_slice(group_length).map(&:join)
end
str = "a9547e"
string_splitter(str,2)
#=> ["a9","54","7e"]
string_splitter(str,3)
#=> ["a94","47e"]
注意:如果字符串不能被均匀分割,则会产生不均匀的结尾组,例如
str = "a9547eP"
string_splitter(str,2)
#=> ["a9","54","7e", "P"]
我假设给定了组大小,如果字符串的长度不能被组大小平均整除,则返回
nil
def split_in_groups(str, group_size)
n, rem = str.size.divmod(group_size)
str.scan(/.{#{n}}/) if rem.zero?
end
比如说,
str = "a9547e"
group_size = 2
然后
请参阅(一种非常有用但未充分利用的方法)和。如果要将一个7个字符的字符串拆分为(2个子字符串*3个字符)或(3个子字符串*2个字符),您的问题即将结束,因为不清楚。您没有解释如果字符串的长度不能被2或3整除,该怎么办。您也没有指出组大小(2或3)是否由该方法给出或确定。最后,你没有回应@ndnenkov的评论,这是粗鲁和不专业的(你的行为,而不是评论)。非常感谢你的回答,这是我想要的。别担心,我确保字符串是可分割的。
str = "a9547e"
group_size = 2
n, rem = str.size.divmod(group_size)
#=> [3, 0]
n #=> 3 (same as str.size/group_size)
rem
#=> 0 (remainder)
str.scan(/.{#{n}}/) if rem.zero?
#=> str.scan(/.{3}/) if true
#=> str.scan(/.../)
#=> ["a95", "47e"]