我试图将一长串文本截断为一定长度,但也希望确保截断的结果以空白结尾.之后我还要加上一个省略号.

例如:

"This is a very long string that has more characters than I want in it."

变成这样:

"This is a very long string that..."

我从这里开始,但很明显,这并不能解决在空白处结束字符串的问题.

<%= item.description[0..30] %>&hellip;

推荐答案

s[0..30].gsub(/\s\w+\s*$/, '...')

最初的答案在30个字符的子字符串以空白字符结尾的情况下不起作用.这就解决了这个问题.

>> desc="This is some text it is really long"

>> desc[0..30].gsub(/\s\w+$/,'...')
"This is some text it is really "

>> desc[0..30].gsub(/\s\w+\s*$/,'...')
"This is some text it is..."

Ruby相关问答推荐

MongoDB通过Brew Services";未定义的方法`plist_starting';";

在 Ruby 中,如何从派生类中重写同一方法的不同方法调用基类方法?

ruby:比较两个单词并从中提取不常见的字母

这是按引用传递/值传递的误解,导致此方法无法按预期输出吗?

如何在将拆分元素保留为空字符串的同时拆分字符串?

如何从 DateTime 值中删除区域?

如何判断一个对象在 Ruby 中是否可迭代?

创建一个哈希值作为数组和默认值作为空数组

Ruby 输出 Unicode 字符

如何按字母顺序排列忽略大小写的数组?

在现有 Jekyll 安装中切换主题

判断是否在 SASS 中定义了变量

了解 ruby​​-prof 输出

如何按字母顺序对字符串字符进行排序?

如何传递函数而不是块

如何在 Rails 3 迁移中描述枚举列?

Ruby 中的自然语言处理

为什么在 ruby​​ 中动态创建大量符号不是一个好主意(对于 2.2 之前的版本)?

class << self vs self.method with Ruby:什么更好?

通过多个分隔符拆分字符串