Ruby on rails RubyonRails:如何从字符串中提取/剪切前300个单词或字符?

Ruby on rails RubyonRails:如何从字符串中提取/剪切前300个单词或字符?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我需要从字符串中提取/剪切前300个单词或字符 这意味着,从一个字符串开始,我需要有限数量的字符 有点像截断 是否有函数可以执行此操作?根据文本大小和性能需要,一个选项是@text.split(/\s+/).slice(0300)。join(“”)如果您确实希望在字符级别进行截断,这是可取的,因为不同的单词在显示长度上差异很大,请使用: str = "many words here words words words ..." first_500_words = str.split(" ").f

我需要从字符串中提取/剪切前300个单词或字符

这意味着,从一个字符串开始,我需要有限数量的字符

有点像截断


是否有函数可以执行此操作?

根据文本大小和性能需要,一个选项是
@text.split(/\s+/).slice(0300)。join(“”)

如果您确实希望在字符级别进行截断,这是可取的,因为不同的单词在显示长度上差异很大,请使用:

str = "many words here words words words ..."
first_500_words = str.split(" ").first(500).join(" ")
first_500_chars = str[0..500]
def truncate_words(text, length = 300, end_string = ' …')
  words = text.split()
  words[0..(length-1)].join(' ') + (words.length > length ? end_string : '')
end
我在这里发现:

如果您使用的是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个单词或一些字符?对于字符,使用。换句话说,你需要正则表达式。或者这是Rails表单还是什么?@guru,请更新您的问题文本以反映字符,而不是文字。否则,这个问题就很容易引起误解。
#first(500)
会更准确elegant@Tass,你能用第一个(500)贴例子吗这是一个例子。如果文本中还包含html标记,请附加.html\u safe