Ho testo con lunghezza ~ 700. Come posso ottenere solo ~ 30 dei suoi primi personaggi?
Ho testo con lunghezza ~ 700. Come posso ottenere solo ~ 30 dei suoi primi personaggi?
Risposte:
Utilizzare String#slice
, anche alias come []
.
a = "hello there"
a[1] #=> "e"
a[1,3] #=> "ell"
a[1..3] #=> "ell"
a[6..-1] #=> "there"
a[-3,2] #=> "er"
a[-4..-2] #=> "her"
a[12..-1] #=> nil
a[-2..-4] #=> ""
a[/[aeiou](.)\1/] #=> "ell"
a[/[aeiou](.)\1/, 0] #=> "ell"
a[/[aeiou](.)\1/, 1] #=> "l"
a[/[aeiou](.)\1/, 2] #=> nil
a["lo"] #=> "lo"
a["bye"] #=> nil
-1
viene utilizzato per arrivare alla fine della stringa, quindi a[1..-1] #=> "ello there"
.
a[-4,-2]
. La notazione unico valido è i due punti: a[-4..-2]
. L'ho imparato nel modo più duro.
Dato che l'hai taggato su Rails, puoi usare truncate:
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-truncate
Esempio:
truncate(@text, :length => 17)
L'estratto è bello anche da sapere, ti consente di visualizzare un estratto di un testo In questo modo:
excerpt('This is an example', 'an', :radius => 5)
# => ...s is an exam...
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-excerpt
se ne hai bisogno nei binari puoi usare prima ( codice sorgente )
'1234567890'.first(5) # => "12345"
c'è anche l' ultimo ( codice sorgente )
'1234567890'.last(2) # => "90"
in alternativa controlla da / a ( codice sorgente ):
"hello".from(1).to(-2) # => "ell"
NoMethodError: undefined method `first' for "abcde":String
, è un'implementazione di rotaie?
Se vuoi una stringa, allora le altre risposte vanno bene, ma se quello che stai cercando sono le prime lettere come caratteri puoi accedervi come un elenco:
your_text.chars.take(30)
your_text[0...30]