2013-02-13 15 views
30

Basta chiedersi se esiste un linguaggio Ruby per estrarre una sottostringa da un indice fino alla fine della stringa. Conosco str[index..-1] che funziona passando un oggetto intervallo al metodo String[] ma è un po 'goffo. Ad esempio, in python potresti scrivere str[index:] che implicitamente ti porterà il resto della stringa.Idiota rubino per la sottostringa dall'indice alla fine della stringa

Esempio:

s = "hello world" 
s[6..-1] # <-- "world" 

C'è qualcosa di più bello di s[6..-1]?

+0

penso esplicitamente è più bello implicitamente in questo caso. – Flauwekeul

+0

@Flauwekeul Perché Range è un clunk in questo senso? –

+0

Cosa intendi con clunk? – Flauwekeul

risposta

9

Penso che non lo sia.

Sembra che Range sia il modo migliore per farlo.

+1

Scusa, potresti chiarire? Pensi che '' 'Range''' (il modo in cui ho nella domanda) è il modo migliore per farlo? –

+1

@SherwinYu, Sì, lo è. –

5

Qui è "più bello" se lo si desidera. È possibile estendere la classe String ruby ​​e quindi utilizzare questo metodo nel codice. Per esempio:

class String 
    def last num 
    self[-num..-1] 
    end 
end 

E poi:

s = "hello world" 
p s.last(6) 
+3

OP non ha richiesto come ottenere gli ultimi X caratteri. Hanno chiesto come ottenere caratteri da X alla fine della stringa. –

2

è possibile estendere la classe String. Non so se si tratta di un idioma rubino però:

class String 
    def last(n) 
    self[(self.length - n)..-1] 
    end 
end 
+0

OP vuole che gli ultimi caratteri inizino da 'n'. Non gli ultimi caratteri 'n'. –

3

Se si desidera ottenere la stringa da un indice per l'intera lunghezza della stringa

s = "hello world" 
s[ 5 .. s.length -1 ] 
+2

Dovrebbe essere 's [5..s.length - 1]' –

Problemi correlati