Как разбить строку на 2 части после определенного положения

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

str = "26723462345"

И я хочу разбить его на 2 части после 6-го char. Как это сделать правильно?

Спасибо!

Ответ 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 возвращает совпадения группы захвата в дополнение к частям строки до и после регулярного выражения.