Как разбить строку на 2 части после определенного положения Например, у меня есть некоторая случайная строка: str = "26723462345" И я хочу разбить его на 2 части после 6-го char. Как это сделать правильно? Спасибо! Ответ 1 Это должно сделать это [str[0..5], str[6..-1]] или [str.slice(0..5), str.slice(6..-1)] Действительно, проверьте http://corelib.rubyonrails.org/classes/String.html Ответ 2 part1, part2 = str.slice!(0...6), str puts part1 # => 267234 puts part2 # => 62345 puts str # => 62345 Ответ 3 Лучший способ IMO string.scan(/.{6}/) irb(main)> str => "abcdefghijklmnopqrstuvwxyz" irb(main)> str.scan(/.{13}/) => ["abcdefghijklm", "nopqrstuvwxyz"] Ответ 4 Здесь вы можете использовать многоразовую версию: str = "26723462345" n = str.length boundary = 6 head = str.slice(0, boundary) # => "267234" tail = str.slice(boundary, n) # => "62345" Он также сохраняет исходную строку, которая может пригодиться позже в программе. Ответ 5 Как забавный ответ, как насчет: str.split(/(^.{1,6})/)[1..-1] Это работает, потому что split возвращает совпадения группы захвата в дополнение к частям строки до и после регулярного выражения.
Ответ 1 Это должно сделать это [str[0..5], str[6..-1]] или [str.slice(0..5), str.slice(6..-1)] Действительно, проверьте http://corelib.rubyonrails.org/classes/String.html
Ответ 2 part1, part2 = str.slice!(0...6), str puts part1 # => 267234 puts part2 # => 62345 puts str # => 62345
Ответ 3 Лучший способ IMO string.scan(/.{6}/) irb(main)> str => "abcdefghijklmnopqrstuvwxyz" irb(main)> str.scan(/.{13}/) => ["abcdefghijklm", "nopqrstuvwxyz"]
Ответ 4 Здесь вы можете использовать многоразовую версию: str = "26723462345" n = str.length boundary = 6 head = str.slice(0, boundary) # => "267234" tail = str.slice(boundary, n) # => "62345" Он также сохраняет исходную строку, которая может пригодиться позже в программе.
Ответ 5 Как забавный ответ, как насчет: str.split(/(^.{1,6})/)[1..-1] Это работает, потому что split возвращает совпадения группы захвата в дополнение к частям строки до и после регулярного выражения.