0

string_a = "I'm a string but this aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa is long."

如何检测aaaa...aaa(没有空格的部分很长)部分并将其截断以使结果看起来像(字符串的其余部分应该看起来相同):

puts string_a # => "I'm a string but this aaa....aaa is long."

我使用这种方法截断:

  def truncate_string(string_x)
    splits = string_x.scan(/(.{0,9})(.*?)(.{0,9}$)/)[0]
    splits[1] = "..." if splits[1].length > 3
    splits.join
  end

所以运行:

puts truncate_string("I'm a very long long long string") # => "I'm a ver...ng string"

问题是检测'aaaa...aaaa'并应用truncate_string到它。

解决方案的第一部分?使用正则表达式检测比 N 长的字符串?

4

2 回答 2

2

怎么样的东西

string.gsub(/\S{10,}/) { |x| "#{x[0..3]}...#{x[-3..-1]}" }

哪里 10 是一个单词的最大长度?

于 2012-08-31T18:14:03.507 回答
1

你喜欢这个吗?

s = "I'm a string but this aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa is long."
s.gsub(/(.* \w{3})\w{5,}(\w{3}.*)/, '\1...\2')
 => "I'm a string but this aaa...aaa is long." 
于 2012-08-31T18:13:53.667 回答