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