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.