Bagaimana cara mendapatkan substring teks?

172

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

Sam Witheker
sumber

Jawaban:

243

Jika Anda memiliki teks dalam your_textvariabel, Anda dapat menggunakan:

your_text[0..29]
Matteo Alessani
sumber
18
atauyour_text[0...30]
Kesedihan
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
Simone Carletti
sumber
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

apneadiving
sumber
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
12

jika Anda membutuhkannya di rel Anda dapat menggunakan pertama ( kode sumber )

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

ada juga yang terakhir ( kode sumber )

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

atau periksa dari / ke ( kode sumber ):

"hello".from(1).to(-2) # => "ell"
Aray Karjauv
sumber
NoMethodError: undefined method `first' for "abcde":String, itu implementasi rel?
Tiw
ya itu. tetapi Anda juga dapat menyalin tautan formulir kode sumber yang saya posting
Aray Karjauv
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)
pengguna12341234
sumber