2011-10-06 16 views

Trả lời

10
part1, part2 = str.slice!(0...6), str 

puts part1 # => 267234 
puts part2 # => 62345 
puts str # => 62345 
+1

Tôi thích video này tốt hơn so với tôi. Mặc dù tôi muốn thêm str = part1 + part2 ở cuối để chuỗi không thay đổi. – Yule

+0

Vâng, nếu bạn muốn giữ cho 'str' không thay đổi thì giải pháp của bạn là tốt hơn tôi nghĩ. –

+0

Điều gì về: str, part1, part2 = str.clone, str.slice! (0..6), str – Yule

0

Dưới đây là một phiên bản thể tái sử dụng cho bạn:

str  = "26723462345" 
n   = str.length 
boundary = 6 
head  = str.slice(0, boundary) # => "267234" 
tail  = str.slice(boundary, n) # => "62345" 

Nó cũng giữ nguyên chuỗi gốc, có thể hữu ích sau này trong chương trình.

+0

Bạn có thể sử dụng '-1' thay vì phải lấy độ dài của chuỗi. –

0

Như một câu trả lời vui vẻ, làm thế nào về:

str.split(/(^.{1,6})/)[1..-1] 

này hoạt động vì chia trả về nhóm chụp phù hợp, ngoài các bộ phận của chuỗi trước và sau khi biểu thức chính quy.

3

Cách tốt nhất IMO là string.scan(/.{6}/)

irb(main)> str 
=> "abcdefghijklmnopqrstuvwxyz" 
irb(main)> str.scan(/.{13}/) 
=> ["abcdefghijklm", "nopqrstuvwxyz"] 
Các vấn đề liên quan