2009-10-27 17 views
22

Tôi đang cố gắng chia chuỗi có kích thước lớn thành bốn ký tự. Đây là cách tôi đang cố gắng làm điều đó:Ruby regex để chia nhỏ bốn ký tự không hoạt động

big_string.split(/..../) 

Đây là một mảng nil. Theo như tôi có thể thấy, điều này sẽ được làm việc. Nó thậm chí còn làm khi tôi cắm nó vào một online ruby regex test.

+0

Tại sao bạn chia một số nguyên bằng regex? Làm thế nào về chỉ chia liên tiếp 10.000 và lưu trữ các kết quả trong một mảng. – Kai

Trả lời

78

Hãy thử scan thay vì:

$ irb 
>> "abcd1234beefcake".scan(/..../) 
=> ["abcd", "1234", "beef", "cake"] 

hoặc

>> "abcd1234beefcake".scan(/.{4}/) 
=> ["abcd", "1234", "beef", "cake"] 

Nếu số ký tự là không chia hết cho 4, bạn cũng có thể lấy các ký tự còn lại:

>> "abcd1234beefcakexyz".scan(/.{1,4}/) 
=> ["abcd", "1234", "beef", "cake", "xyz"] 

(Số {1,4} sẽ tham lam lấy từ 1 đến 4 ký tự)

1

Hmm, tôi không biết những gì Rubular đang làm gì ở đó và tại sao - nhưng

big_string.split(/..../) 

không chuyển thành

chia chuỗi tại mỗi 4 ký tự-chuỗi

nên kết quả chính xác thành một cái gì đó như

["", "", "", "abc"] 
+0

Tại sao bạn thoát '.' và') 'đầu tiên của mình? Đó không phải là Ruby hợp lệ. – Volte

0

Rất tiếc.

str = 'asdfasdfasdf' 
c = 0 
out = [] 
inum = 4 
(str.length/inum).round.times do |s| 
    out.push(str[c, round(s * inum)]) 
    c += inum 
end 
+0

Rất tiếc? ++ 1 cho gọn nhẹ ... –

Các vấn đề liên quan