Wie bekomme ich eine Textzeichenfolge?


172

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

Antworten:


243

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

your_text[0..29]

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

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


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"

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)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.