Wie bekomme ich eine Textzeichenfolge?

172

Ich habe Text mit einer Länge von ~ 700. Wie bekomme ich nur ~ 30 seiner ersten Zeichen?

Sam Witheker
quelle

Antworten:

243

Wenn Sie Ihren Text in einer your_textVariablen haben, können Sie Folgendes verwenden:

your_text[0..29]
Matteo Alessani
quelle
18
oderyour_text[0...30]
Trauer
207

Verwenden Sie String#slice, auch als Alias [].

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
quelle
31
Um klar zu sein, -1wird verwendet, um an das Ende der Zeichenfolge zu gelangen, also a[1..-1] #=> "ello there".
Joshua Pinter
5
Dies mag für einige offensichtlich sein, aber es ist nicht in Ordnung, ein Komma für negative Positionen zu verwenden : a[-4,-2]. Die einzig gültige Notation sind die beiden Punkte : a[-4..-2]. Ich habe es auf die harte Tour gelernt.
Cavpollo
24

Da Sie es als Rails markiert haben, können Sie "Abschneiden" verwenden:

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

Beispiel:

 truncate(@text, :length => 17)

Auszug ist auch schön zu wissen, es ermöglicht Ihnen, einen Auszug eines Textes anzuzeigen.

 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
quelle
9
Ruby ist nicht Rails.
Joó Ádám
@ JoóÁdám Tag wurde von Andrew Marshall geändert
apneadiving
Gab es eine Rechtfertigung für die Änderung? Wenn das OP in Rails funktioniert und nach einer Lösung in Rails fragt, sollte die Frage mit Rails gekennzeichnet werden. Und dann würde Ihre Antwort Sinn machen.
Joó Ádám
@ JoóÁdám die Frage wurde Rails von der OP markiert, das ist der Punkt
apneadiving
Ich verstehe, ich verstehe nicht, warum das Tag entfernt wurde. Ich habe die Frage bearbeitet und klargestellt, dass es sich um Rails handelt. Die Überprüfung steht noch aus.
Joó Ádám
12

Wenn Sie es in Schienen benötigen, können Sie es zuerst verwenden ( Quellcode )

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

es gibt auch letzte ( Quellcode )

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

alternativ prüfen von / nach ( Quellcode ):

"hello".from(1).to(-2) # => "ell"
Aray Karjauv
quelle
NoMethodError: undefined method `first' for "abcde":Stringist es eine Rails-Implementierung?
Tiw
Ja, so ist es. Sie können aber auch Quellcode-Formular-Links kopieren, die ich gepostet habe
Aray Karjauv
0

Wenn Sie eine Zeichenfolge möchten, sind die anderen Antworten in Ordnung. Wenn Sie jedoch nach den ersten Buchstaben als Zeichen suchen, können Sie als Liste darauf zugreifen:

your_text.chars.take(30)
user12341234
quelle