Viết xuống các chỉ số thường giúp tôi:
# 0 1 2 3 4 5 6 7 8 9 10 11 12
str = 'a' 'n' 'y' 't' 'h' 'i' 'n' 'g' ' ' 'e' 'l' 's' 'e' #=> "anything else"
# -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
Bạn có thể tham khảo cho mỗi nhân vật bằng một trong hai chỉ số tích cực hay tiêu cực của nó. Ví dụ, bạn có thể sử dụng một trong hai 3
hoặc -10
để chỉ "t"
:
str[3] #=> "t"
str[-10] #=> "t"
và một trong hai 7
hoặc -6
để chỉ "g"
:
str[7] #=> "g"
str[-6] #=> "g"
Tương tự như vậy, bạn có thể sử dụng mỗi một trong các chỉ số để lấy "thing"
qua một dải:
str[3..7] #=> "thing"
str[3..-6] #=> "thing"
str[-10..7] #=> "thing"
str[-10..-6] #=> "thing"
Tuy nhiên,sẽ trả về một chuỗi rỗng, vì -1
là ký tự cuối cùng và 1
là ký tự thứ hai. Nó sẽ tương đương với str[12..1]
.
Nhưng nếu chuỗi bao gồm một nhân vật duy nhất, phạm vi đó có hiệu lực:
# 0
str = '1'
# -1
str[-1..1] #=> "1"
Trong thực tế, 1
đề cập đến một chỉ số sau ký tự đầu tiên, vì vậy 0
sẽ đủ:
str[-1..0] #=> "1"
phiên bản ruby của tôi là ruby 2.3.0p0 (2015-12-25 bản sửa đổi 53290) [x86_64-darwin15] –
Nếu bạn muốn xây dựng, vui lòng chỉnh sửa câu hỏi thay vì sử dụng nhận xét. "Ruby v2.3" là đủ. –
Như bạn nói, '" a "[- 1..1] # =>" a "' và '" abf "[- 1..1] =>" "', nhưng ngoài ra, '" ab "[ -1..1] => "b" '. –