テキストの部分文字列を取得する方法は?


172

長さが約700のテキストがあります。最初の文字を最大30個まで取得するにはどうすればよいですか?

回答:



207

String#slice別名としても使用し[]ます。

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
明確に-1するために、文字列の終わりに到達するために使用されますa[1..-1] #=> "ello there"
Joshua Pinter 14

5
これは明らかな場合もありますが、負の位置にコンマを使用して問題ありませんa[-4,-2]。有効な表記は2つのドットのみですa[-4..-2]。難しい方法でそれを学びました。
cavpollo 2015

24

Railsにタグを付けたので、truncateを使用できます。

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

例:

 truncate(@text, :length => 17)

抜粋も知っておくと便利です。テキストの抜粋を次のように表示できます。

 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はRailsではありません。
チュ・アダム

@JoóÁdámタグは、Andrew Marshallによって変更されました
2014年

変更の正当化はありましたか?OPがRailsで機能し、Railsでの解決策を要求する場合、質問にはRailsのタグを付ける必要があります。そして、あなたの答えは理にかなっています。
チュ・アダム

@JoóÁdám質問はOPでのRailsをタグ付けされた、ポイントのthats
apneadiving

わかりました。タグが削除された理由がわかりません。質問を編集して、それがRailsについてであることを明確にしました。審査待ちです。
チュ・アダム

12

あなたがレールでそれを必要とするならば、あなたは最初に使うことができます(ソースコード

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

最後にもありますソースコード

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

または、from / toソースコード確認ます

"hello".from(1).to(-2) # => "ell"

NoMethodError: undefined method `first' for "abcde":String、それはレールの実装ですか?
Tiw、

はい、そうです。しかし、私が投稿したリンクからソースコードをコピーすることもできます
Aray Karjauv

0

文字列が必要な場合は、他の回答も問題ありませんが、探しているものが文字としての最初の数文字である場合は、リストとしてそれらにアクセスできます。

your_text.chars.take(30)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.