Câu hỏi dễ, nhưng không thể tìm thấy nó trong tài liệu.
Làm cách nào để chia một chuỗi hoặc một mảng n
cho đến mãi mãi?
>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
from (irb):2
Câu hỏi dễ, nhưng không thể tìm thấy nó trong tài liệu.
Làm cách nào để chia một chuỗi hoặc một mảng n
cho đến mãi mãi?
>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
from (irb):2
Câu trả lời:
Sử dụng lập chỉ mục ngược:
[1..-1]
Một phần tử trong Ruby (và một số ngôn ngữ khác) có chỉ mục chuyển tiếp thẳng và chỉ mục "đảo ngược". Vì vậy, chuỗi có độ dài n
có 0..(n-1)
và các (-n)..-1
chỉ mục bổ sung , nhưng không có thêm - bạn không thể sử dụng >=n
hoặc <-n
lập chỉ mục.
'i' 'n'|'A' 'u' 's' 't' 'i' 'n'|'A' 'u' 's' 't' 'i' 'n'|'A' 'u' 's'
-8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
<- error | you can use this | error ->
Sử dụng -1 :-)
'Austin'[1..-1] # => "ustin"
Khá thanh lịch khi sử dụng phạm vi vô tận được giới thiệu trong Ruby 2.6:
string = 'Austin'
string[1..] # => ustin
Hy vọng điều đó có ích cho ai đó. Cắt một vài ký tự từ cách tiếp cận tốt nhất cho đến bây giờ và sẽ rất dễ đọc khi phạm vi vô tận thường xuyên được áp dụng.
Nếu bạn gán chuỗi cho một biến, bạn có thể sử dụng chiều dài / kích thước
string = 'Austin'
string[1..string.length] # => ustin
string[1..string.size] # => ustin