Ruby 如何拆分n个子字符串中的字符串?

Ruby 如何拆分n个子字符串中的字符串?,ruby,Ruby,我从ruby开始,我遇到了一个问题。 我想将一个字符串拆分为多个子字符串 例如,我有以下字符串: str = "a9547e" 我想把它分成两个子串,三个字符,或者三个子串,两个字符。我得到了这样的东西: str = ["a9","54","7e"] str = ["a94","47e"] 我尝试了不同的方法,但没有任何效果。我不确定我是否完全理解其意图,但是像这样的方法怎么样 def string_splitter(str,group_length) str.each_char.ea

我从ruby开始,我遇到了一个问题。 我想将一个字符串拆分为多个子字符串

例如,我有以下字符串:

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"]