Łatwe pytanie, ale nie mogłem go znaleźć w dokumencie.
Jak pokroić ciąg lub tablicę od nzawsze?
>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
from (irb):2
Łatwe pytanie, ale nie mogłem go znaleźć w dokumencie.
Jak pokroić ciąg lub tablicę od nzawsze?
>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
from (irb):2
Odpowiedzi:
Użyj odwrotnego indeksowania:
[1..-1]
Element w Rubim (i kilku innych językach) ma prosty indeks i „odwrócony”. Tak więc łańcuch o długości nma 0..(n-1)i dodatkowe (-n)..-1indeksy, ale nic więcej - nie możesz używać >=nani <-nindeksów.
'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 ->
Użyj 1 :-)
'Austin'[1..-1] # => "ustin"
Całkiem eleganckie, używając nieskończonego zakresu wprowadzonego w Ruby 2.6:
string = 'Austin'
string[1..] # => ustin
Mam nadzieję, że to dla kogoś przydatne. Obcina kilka znaków z najlepszego podejścia do tej pory i będzie bardzo czytelny, gdy niekończące się zakresy będą regularnie stosowane.
Jeśli przypiszesz ciąg do zmiennej, możesz użyć długości / rozmiaru
string = 'Austin'
string[1..string.length] # => ustin
string[1..string.size] # => ustin