Ví dụ tôi có một số chuỗi ngẫu nhiên:Làm thế nào để chia chuỗi thành 2 phần sau vị trí nhất định
str = "26723462345"
Và tôi muốn chia nó trong 2 phần sau char 6 thứ. Làm thế nào để làm điều này một cách chính xác?
Cảm ơn bạn!
Ví dụ tôi có một số chuỗi ngẫu nhiên:Làm thế nào để chia chuỗi thành 2 phần sau vị trí nhất định
str = "26723462345"
Và tôi muốn chia nó trong 2 phần sau char 6 thứ. Làm thế nào để làm điều này một cách chính xác?
Cảm ơn bạn!
này nên làm điều đó
[str[0..5], str[6..-1]]
hoặc
[str.slice(0..5), str.slice(6..-1)]
Thật nên kiểm tra http://corelib.rubyonrails.org/classes/String.html
part1, part2 = str.slice!(0...6), str
puts part1 # => 267234
puts part2 # => 62345
puts str # => 62345
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.
Bạn có thể sử dụng '-1' thay vì phải lấy độ dài của chuỗi. –
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.
Cách tốt nhất IMO là string.scan(/.{6}/)
irb(main)> str
=> "abcdefghijklmnopqrstuvwxyz"
irb(main)> str.scan(/.{13}/)
=> ["abcdefghijklm", "nopqrstuvwxyz"]
hoặc str [0 ... 6] và bạn viết ở khắp mọi nơi giá trị then chốt "6" – tokland