Bir metin alt dizesi nasıl alınır?


172

Uzunluğu ~ 700 olan bir metin var. İlk karakterlerinden sadece ~ 30 tanesini nasıl alabilirim?

Yanıtlar:


243

Metninizi your_textdeğişkente kullanıyorsanız aşağıdakileri kullanabilirsiniz:

your_text[0..29]

18
veyayour_text[0...30]
üzüntü

207

Kullanım String#sliceolarak da adlandırılır [].

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
Açık olmak gerekirse -1, dizenin sonuna ulaşmak için kullanılır a[1..-1] #=> "ello there".
Joshua Pinter

5
Bu bazı bariz olabilir, ama öyle değil negatif pozisyonları için virgül kullanmayı tamam: a[-4,-2]. Tek geçerli notasyonu iki noktadır: a[-4..-2]. Zor yoldan öğrendim.
cavpollo

24

Rails etiketlendiğinden, kısaltmayı kullanabilirsiniz:

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

Misal:

 truncate(@text, :length => 17)

Alıntı da bilmek güzel, metnin bir alıntısını görüntülemenizi sağlar Şöyle:

 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 Ray değil.
Joó Ádám

@ JoóÁdám etiketi Andrew Marshall tarafından değiştirildi
apneadiving

Değişim için herhangi bir gerekçe var mıydı? OP, Rails'te çalışıyor ve Rails'te bir çözüm istiyorsa, sorunun Rails ile etiketlenmesi gerekir. Ve sonra cevabınız mantıklı olurdu.
Joó Ádám

@ JoóÁdám soru Rails OP tarafından etiketlendi, nokta
apneadiving

Anladım, etiketin neden kaldırıldığını anlamıyorum. Soruyu düzenledim ve bunun Rails ile ilgili olduğunu açıkladım. İncelenmeyi bekliyor.
Joó Ádám


0

Bir dize istiyorsanız, diğer cevaplar iyidir, ancak aradığınız şey karakter olarak ilk birkaç harfse, bunlara liste olarak erişebilirsiniz:

your_text.chars.take(30)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.