Как разбить строку на n подстрок? - PullRequest
0 голосов
/ 05 апреля 2019

Я начал с ruby, и у меня возникла проблема. Я хочу разбить строку на множество подстрок.

Например, у меня есть эта строка:

str = "a9547e"

И я хочу разделить его на две подстроки из трех символов или три подстроки из двух символов. И я получаю что-то вроде этого:

str = ["a9","54","7e"]
str = ["a94","47e"]

Я пробовал разные вещи, но ничего не работает.

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Не уверен, что полностью понимаю намерение, но как насчет чего-то подобного

0 голосов
/ 05 апреля 2019

Я предположил, что размер группы указан, и метод должен возвращать nil, если длина строки не делится равномерно на размер группы.

def split_in_groups(str, group_size)
  n, rem = str.size.divmod(group_size)
  str.scan(/.{#{n}}/) if rem.zero? 
end

split_in_groups("a9547e", 2)
  #=> ["a95", "47e"] 
split_in_groups("a9547e", 3)
  #=> ["a9", "54", "7e"]
split_in_groups("a9547e", 1)
  #=> ["a9547e"] 
split_in_groups("a9547e", 5)
  #=> nil

Если, например,

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

См. Integer # divmod (очень полезный, но недостаточно используемый метод) и String # scan .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...