2011-12-05 7 views
2

文字列から最初の300単語または文字を取り除く必要があります。Ruby on Rails:文字列から最初の300単語または文字を取り除くにはどうすればよいですか?

つまり、文字列からは限られた数の文字が最初から必要です。

切り捨てのようなものです。

これを行う機能はありますか?あなたのテキストとパフォーマンスのニーズの大きさに応じ

+0

300語またはいくつかの文字数が必要ですか?文字については、http://www.ruby-doc.org/core-1.9.3/String.html#method-i-5B-5Dを使用してください。言葉の場合、正規表現が必要です。これはRailsのフォームなのでしょうか? – bsamek

+0

最初の300文字です。 – shibly

+1

@guru、あなたの質問のテキストを単語ではなく文字を反映するように更新してください。そうでなければ、疑問は非常に誤解を招く。 –

答えて

15
str = "many words here words words words ..." 
first_500_words = str.split(" ").first(500).join(" ") 
first_500_chars = str[0..500] 
+8

'#first(500)'はよりエレガントになります – Reactormonk

+0

@タス、最初に(500)でサンプルを投稿できますか? – shibly

+0

http://stackoverflow.com/a/23031956/3728916 - ここに例があります。 htmlタグもテキストに含まれている場合は.html_safeを添付してください – ImranNaqvi

3

あなたが実際に別の単語が表示長にかなり異なるため得策であるキャラクターレベル、上で切り捨てしたい場合は、一つの選択肢は@text.split(/\s+/).slice(0,300).join(' ')

3

あり、使用:私はここで見つける

def truncate_words(text, length = 300, end_string = ' …') 
    words = text.split() 
    words[0..(length-1)].join(' ') + (words.length > length ? end_string : '') 
end 

:あなたがRailsのを使用している場合http://snippets.dzone.com/posts/show/804

が、あなたはまた、を使用することができますしかし、単語境界を考慮していません。

0
str = "this is really long string which I want to truncate..." 

str.truncate 300, separator: " " 

か、カッコ

str.truncate(300, separator: " ") 

をyouseすることを好む場合は、上記のすべての最もエレガントなソリューションです。このトピックで言及したように、Railsを使用するとうまく動作します。

str.split.first(300).join " " 

split方法あなたは、スペースでテキストを分割する必要がある場合は、引数を取る必要はありません:あなたは生のRubyでコーディングする場合は、このような何かを書く必要があります。

関連する問題