將字符串截斷爲前n個單詞的最佳方法是什麼?將字符串截斷爲前n個字
回答
n = 3
str = "your long long input string or whatever"
str.split[0...n].join(' ')
=> "your long long"
str.split[0...n] # note that there are three dots, which excludes n
=> ["your", "long", "long"]
'str.split(/ \ s + /,n + 1)[0 ... n] .join('')'會提高性能。 – sawa 2011-06-04 10:11:58
這將得到前4個單詞,而不是3. – 2014-05-15 17:14:10
@ZackXu確保您使用'...'範圍字面值,而不是'..'。三個點不包括第n個值。 – 2014-05-15 17:19:06
你可以做這樣的:
s = "what's the best way to truncate a ruby string to the first n words?"
n = 6
trunc = s[/(\S+\s+){#{n}}/].strip
,如果你不介意做一個副本。
你也可以申請Sawa's改進(希望我仍然是一個數學家,這將是一個定理,一個偉大的名字)通過調整空白檢測:
trunc = s[/(\s*\S+){#{n}}/]
如果你要處理的n
那比s
那麼你可以使用這個變體字的數目大:
s[/(\S+(\s+)?){,#{n}}/].strip
改進:'trunc = s [/(\ s * \ S +){#{n}} /]'。你不需要'strip'。 – sawa 2011-06-04 09:43:46
@sawa:你可以把它(和你的'split'方法的版本)作爲答案,改進和澄清現有的答案是值得的。 – 2011-06-04 18:06:13
@sawa,並添加一個顯示加速的基準。 – 2011-06-04 21:40:55
您可以使用str.split.first(n).join(' ')
其中n爲任何數字。在原始字符串
毗連空格被替換爲返回的字符串中的單個空格。
例如,嘗試在這個IRB:
>> a='apple orange pear banana pineaple grapes'
=> "apple orange pear banana pineaple grapes"
>> b=a.split.first(2).join(' ')
=> "apple orange"
此語法是很清楚的(因爲它不通過索引使用正則表達式,陣列切片)。如果你用Ruby編程,你知道清晰是一種重要的風格選擇。
一種用於join
速記是*
所以此語法str.split.first(n) * ' '
是等效和更短(更地道,對於外行不太清楚)。
您還可以使用的take
代替first
所以下面會做同樣的事情
a.split.take(2) * ' '
如果它的軌道4.2(有truncate_words)
string_given.squish.truncate_words(number_given, omission: "")
- 1. BufferedWriter將截斷字符串
- 2. AJAX將「00」字符串截斷爲「0」
- 3. x個字符後截斷字符串
- 4. 截斷字符串
- 5. 將字符串N拆分爲N/X個字符串
- 6. 截斷在python字符串
- 7. 字符串截斷的ClientDataSet
- 8. RODBC字符串被截斷
- 9. UILabel字符串截斷
- 10. PHP截斷字符串
- 11. Python截斷長字符串
- 12. KRL:截斷字符串
- 13. 用jQuery將數組項目截斷爲前五個字符?
- 14. 將字符串截斷爲Python中的特定字節數
- 15. 按字節截斷字符串
- 16. 將字符串N拆分爲4個不同的字符串
- 17. 將字符串拆分爲N個字符串
- 18. 字符串的前n個字符,即使它比n短?
- 19. 獲得從字符串前N個字符不切斷整個單詞
- 20. 如何將SHA1散列字符串截斷爲32位字符串
- 21. 如何使用sed/awk將每個目錄截斷爲n個字符?
- 22. 截斷直到字符串第n個字符之前確切標誌,使用PHP
- 23. 使字符串中的前N個字母變爲粗體?
- 24. PHP,將字符串拆分爲n個字符
- 25. PowerShell:如何將字符串限制爲N個字符?
- 26. 將浮點數轉換爲字符串而不截斷前導或尾隨零
- 27. ActiveRecord,有意將字符串截斷爲db列寬
- 28. 將字符串截斷爲一定數量的字符,忽略HTML
- 29. 確保字符串每n個字符都有一箇中斷字符
- 30. 爲什麼要將密碼哈希截斷爲14個字符?
你是這可能是以下只使用Ruby或Ruby on Rails? – 2011-06-05 03:50:44