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 に答える