Ten ostatni będzie działał z Rubim 2.6 i prawdopodobnie stanie się sposobem na osiągnięcie tego celu przez Railsy - zobacz tutaj, aby uzyskać więcej informacji .
SRack
Odpowiedzi:
165
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 ->
Dobra ilustracja, jednak użycie przez ciebie "ważnych" liter (tj. Tych, które istnieją w ciągu) jest moim zdaniem nieco mylące, ponieważ dane poza jego granicami są naprawdę nieokreślone. To może być wszystko, łącznie ze znakami niebędącymi postaciami. W każdym razie +1 za tak dobrze wyjaśnioną odpowiedź :-)
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.
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
n
ma0..(n-1)
i dodatkowe(-n)..-1
indeksy, ale nic więcej - nie możesz używać>=n
ani<-n
indeksó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 ->
źródło
Użyj 1 :-)
'Austin'[1..-1] # => "ustin"
źródło
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.
źródło
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
źródło