如果字符串足够长,请在字符串中添加额外的文本

时间:2015-11-17 23:28:59

标签: ruby string

如果字符串的长度超过...,我想在字符串中添加省略号N。例如,对于N = 11

ellipse_if_necessary('Hello') # => "Hello"
ellipse_if_necessary('Hello world, how are you') # => "Hello world..."

最简单的方法是什么?

4 个答案:

答案 0 :(得分:2)

"some string".sub(/(.{31,})/, '\1...')

答案 1 :(得分:0)

你可以使用quick-if:

来完成
string.length > 30 ? string[0..30]+'...' : string

使用if语句的更多“ruby方式”:

string = string[0..30] + '...' if string.length > 30

在第二个例子中,如果字符串短于或等于30个字符,那么它就不会受到影响。

或其他方式(如@marimaf所指出的)是使用truncate方法:

string.truncate(30)

答案 2 :(得分:0)

我的第一个想法是

"#{string[0..30]}#{'...' if string.length > 30}"

但@Macmee的第一个快速 - 如果看起来非常好,我想这比我的提议便宜。

答案 3 :(得分:0)

有一种rails方法可以满足您的需要,称为truncate

就像这样,假设N = 5:

 "some string".truncate(5)
 => "so..." 

请注意,在此N = 5中,它包含省略号字符,因此您所描述的示例可能需要N + 3