web-dev-qa-db-fra.com

Comment obtenir une sous-chaîne de texte?

J'ai un texte de longueur ~ 700. Comment puis-je obtenir seulement ~ 30 de ses premiers personnages?

161
Sam Witheker

Si vous avez votre texte dans la variable your_text, vous pouvez utiliser:

your_text[0..29]
229
Matteo Alessani

Utilisez String#slice , alias également _[]_.

_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
_
200
Simone Carletti

Puisque vous avez tagué Rails, vous pouvez utiliser truncate:

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

Exemple:

 truncate(@text, :length => 17)

L'extrait est agréable à connaître aussi, il vous permet d'afficher un extrait de texte comme suit:

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

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

24
apneadiving

si vous en avez besoin dans Rails , vous pouvez utiliser premier ( code source )

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

il y a aussi dernier ( code source )

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

alternativement, vérifier de/à ( code source ):

"hello".from(1).to(-2) # => "ell"
10
Aray

Si vous voulez une chaîne, les autres réponses vous conviennent, mais si vous cherchez les premières lettres sous forme de caractères, vous pouvez y accéder sous forme de liste:

your_text.chars.take(30)
0
user12341234