Bagaimana cara mendapatkan substring teks?


172

Saya memiliki teks dengan panjang ~ 700. Bagaimana saya hanya mendapatkan ~ 30 karakter pertama?

Jawaban:



207

Gunakan String#slice, juga 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
Agar jelas, -1digunakan untuk sampai ke ujung string, jadi a[1..-1] #=> "ello there".
Joshua Pinter

5
Ini mungkin jelas bagi sebagian orang, tetapi tidak apa-apa untuk menggunakan koma untuk posisi negatif: a[-4,-2]. Notasi hanya berlaku adalah dua titik: a[-4..-2]. Belajar dengan cara yang sulit.
cavpollo

24

Karena Anda memberi tag Rails, Anda dapat menggunakan truncate:

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

Contoh:

 truncate(@text, :length => 17)

Kutipan ini baik untuk diketahui juga, ini memungkinkan Anda menampilkan kutipan teks Seperti:

 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 bukan Rails.
Joó Ádám

Tag JoóÁdám diubah oleh Andrew Marshall
apneadiving

Apakah ada pembenaran untuk perubahan itu? Jika OP bekerja di Rails dan meminta solusi di Rails, maka pertanyaannya harus ditandai dengan Rails. Dan kemudian jawaban Anda akan masuk akal.
Joó Ádám

@ JoóÁdám pertanyaan itu ditandai Rails oleh OP, itu intinya
apneadiving

Saya mengerti, saya tidak mengerti mengapa tag itu dihapus. Saya telah mengedit pertanyaan dan menjelaskan tentang Rails. Itu sedang menunggu tinjauan.
Joó Ádám


0

Jika Anda menginginkan string, maka jawaban yang lain baik-baik saja, tetapi jika yang Anda cari adalah beberapa huruf pertama sebagai karakter, Anda dapat mengaksesnya sebagai daftar:

your_text.chars.take(30)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.