2010-06-17 14 views
10

in Ruby, voglio solo sbarazzarsi delle ultime n caratteri di una stringa, ma il seguente non funzionaqual è il modo migliore per rimuovere gli ultimi n caratteri di una stringa (in Ruby)?

"string"[0,-3] 

"string".slice(0, -3) 

mi piacerebbe un metodo pulito, non qualcosa come

"string".chop.chop.chop 

può essere banale, per favore chiunque insegnami! Grazie!

+5

+1 per "chop.chop.chop". Mi fa pensare a te come se prendessi un'ascia alla fine della corda. :-) –

+1

'chop.chop.chop' ha lo svantaggio aggiunto di fare tre copie extra del tuo' String'. Se è solo "ciao, mondo", allora non importa, ma se è 'File.read ('/ some/really/big.file')', lo sarà. –

+0

Il compito opposto, ottenere gli ultimi 'n' byte/caratteri/qualsiasi dalla tua stringa è leggermente complicato: http://stackoverflow.com/questions/2174767/extracting-the-last-n-characters-from-a-ruby -string –

risposta

19

È possibile utilizzare intervalli.

"string"[0..-4] 
+0

Mi hai battuto! Puoi anche farlo con slice: "string" .slice (0 ..- 4) – sosborn

+3

[] e slice sono synonum – Tao

+0

ciao, grazie! Ho appena scoperto di aver commesso un errore sul secondo parametro di [] o slice; è la lunghezza piuttosto che la posizione finale ... – Tao

9

Si potrebbe usare un espressione regolare con gsub ...

"string".gsub(/.{3}$/, '') 
1

Se si aggiunge un !-slice rimuoverà distruttivo gli ultimi n caratteri, senza dover assegnarlo a un'altra variabile:

my_string.slice!(my_string.length-3,my_string.length) 

rispetto a:

new = my_string.slice(0..-4) 
Problemi correlati