我需要從字符串中取出/剪切前300個單詞或字符。Ruby on Rails:如何從字符串中取出/剪切前300個單詞或字符?
這意味着,我需要從字符串開始的有限數量的字符。
像截斷一樣。
有沒有這樣的功能?
我需要從字符串中取出/剪切前300個單詞或字符。Ruby on Rails:如何從字符串中取出/剪切前300個單詞或字符?
這意味着,我需要從字符串開始的有限數量的字符。
像截斷一樣。
有沒有這樣的功能?
str = "many words here words words words ..."
first_500_words = str.split(" ").first(500).join(" ")
first_500_chars = str[0..500]
'#first(500)'會更優雅 – Reactormonk
@Tass,你可以發表第一個例子(500)嗎? – shibly
http://stackoverflow.com/a/23031956/3728916 - 這裏是例子。如果HTML標籤也包含在文本中,則附加.html_safe – ImranNaqvi
取決於你的文字和性能需求的大小,一個選擇是@text.split(/\s+/).slice(0,300).join(' ')
如果你真的想截斷的人物等級,因爲不同的單詞顯示長度不同,頗有幾分是可取的,用途:
def truncate_words(text, length = 300, end_string = ' …')
words = text.split()
words[0..(length-1)].join(' ') + (words.length > length ? end_string : '')
end
,我發現在這裏:http://snippets.dzone.com/posts/show/804
如果你使用Rails,你也可以使用string.truncate
但它沒有考慮到字邊界。
str = "this is really long string which I want to truncate..."
str.truncate 300, separator: " "
,或者如果你喜歡憂色括號
str.truncate(300, separator: " ")
這都是上面的最優雅的解決方案。正如您在主題中提到的那樣,您使用Rails以便它能夠正常工作。如果您在原始的Ruby代碼,你應該寫這樣的事情:
str.split.first(300).join " "
的split
方法沒有必要,如果你需要用空格到文本拆分採取的論點。
你需要300個字還是一定數量的字符?對於字符,請使用http://www.ruby-doc.org/core-1.9.3/String.html#method-i-5B-5D。換句話說,你需要正則表達式。或者這是一個Rails的形式或東西? – bsamek
前300個字符。 – shibly
@guru,請更新您問題的文字以反映字符,而不是文字。這個問題是非常誤導。 –