将字符串截断为前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