¿Cómo obtener una subcadena de texto?

172

Tengo texto con longitud ~ 700. ¿Cómo obtengo solo ~ 30 de sus primeros personajes?

Sam Witheker
fuente

Respuestas:

243

Si tiene su texto en your_textvariable, puede usar:

your_text[0..29]
Matteo Alessani
fuente
18
oyour_text[0...30]
Dolor
207

Uso String#slice, también alias como [].

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
Simone Carletti
fuente
31
Para ser claros, -1se usa para llegar al final de la cadena, entonces a[1..-1] #=> "ello there".
Joshua Pinter
55
Esto puede ser obvio para algunos, pero es no apropiado el uso de una coma para las posiciones negativas: a[-4,-2]. La notación es válida solamente los dos puntos: a[-4..-2]. Lo aprendí por las malas.
cavpollo 01 de
24

Como lo etiquetó como Rails, puede usar truncar:

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-truncate

Ejemplo:

 truncate(@text, :length => 17)

Extracto es bueno saberlo también, le permite mostrar un extracto de un texto de esta manera:

 excerpt('This is an example', 'an', :radius => 5)
 # => ...s is an exam...

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-excerpt

apneadiving
fuente
9
Ruby no es Rails.
Joó Ádám
Andrew Marshall cambió la etiqueta de @ JoóÁdám
apneadiving
¿Hubo alguna justificación para el cambio? Si el OP funciona en Rails y solicita una solución en Rails, entonces la pregunta debe etiquetarse con Rails. Y entonces tu respuesta tendría sentido.
Joó Ádám
@ JoóÁdám, la pregunta fue etiquetada Rails por el OP, ese es el punto
cumplir el
Lo entiendo, no veo por qué se eliminó la etiqueta. Edité la pregunta y dejé en claro que se trata de Rails. Está pendiente de revisión.
Joó Ádám
12

si lo necesita en rieles puede usar primero ( código fuente )

'1234567890'.first(5) # => "12345"

también hay último ( código fuente )

'1234567890'.last(2) # => "90"

alternativamente, verifique desde / hasta ( código fuente ):

"hello".from(1).to(-2) # => "ell"
Aray Karjauv
fuente
NoMethodError: undefined method `first' for "abcde":String, es una implementación de rieles?
Tiw
sí lo es. pero también puede copiar los enlaces del formulario de código fuente que
publiqué
0

Si desea una cadena, las otras respuestas están bien, pero si lo que está buscando son las primeras letras como caracteres, puede acceder a ellas como una lista:

your_text.chars.take(30)
usuario12341234
fuente