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.