Как разбить строку пополам, на две переменные, в одном выражении? - PullRequest
0 голосов
/ 24 июня 2018

Я хочу разделить str пополам и назначить каждую половину first и second

Как этот пример псевдокода:

first,second = str.split( middle )

Ответы [ 3 ]

0 голосов
/ 24 июня 2018
first,second = str.partition(/.{#{str.size/2}}/)[1,2]

Пояснение

Вы можете использовать раздел .Использование шаблона регулярных выражений для поиска количества символов X (в данном случае str.size / 2).

Разделение возвращает три элемента;голова, спичка и хвост.Поскольку мы сопоставляем любой символ, head всегда будет пустой строкой.Таким образом, мы заботимся только о совпадении и хвосте отсюда [1,2]

0 голосов
/ 24 июня 2018
def halves(str)
  [str[0, str.size/2], str[str.size/2..-1]]
end

first, second = halves('abcdef')
  #=> ["abc", "def"]
first, second = halves('abcde')
  #=> ["ab", "cde"]

Если вы решили использовать String#split, вы можете (хакерски) написать:

first, second = str.insert(str.size/2, 0.chr).split(0.chr)
0 голосов
/ 24 июня 2018
class String
  def halves
    chars.each_slice(size / 2).map(&:join)
  end
end

Будет работать, но вам нужно будет настроить то, как вы хотите обрабатывать строки нечетного размера.

Или в строке: first, second = str.chars.each_slice(str.length / 2).map(&:join)

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