在Ruby中的某些字符限制上添加(...)哈希条目

时间:2014-11-12 13:40:59

标签: ruby regex hash

我对Ruby非常陌生并且正在寻找解决方案。

基本上我有[0>形式的哈希字符串,1>字符串]等。

我想运行一个循环,它可以计算散列中字符串中的字符数,如果达到限制,则应该在该点剪切字符串的结尾并替换为' ...&# 39;

示例:

Say I set my character count at 10:

Hello World!

Would shorten to:

Hello Worl...

值得注意的是,这个哈希是从一个数组创建的,因此如果在哈希转换之前认为它更明智,那也没关系。任何建议都非常感谢。

2 个答案:

答案 0 :(得分:1)

使用ActiveSupport的截断方法

如果您愿意混合ActiveSupport gemString#truncate中的方法,这是微不足道的。例如:

require 'active_support/core_ext/string/filters'

'Hello World!'.truncate 10
#=> "Hello W..."

请注意,#arcate方法将省略号计为三个字符(省略号中每个句点一个字符)朝向总字符数。如果您在省略号之前实际需要10个字符而不是包含它,则将您的计数压缩三个字符(例如13而不是10)。

答案 1 :(得分:0)

我认为这不是很美,但它会照你要求的那样:

hash = {
  0 => 'hello world',
  1 => 'hello'
}

hash.each_pair do |key, value|
  p key: key
  p value: value.length > 10 ? value[0..9] + '...' : value
end

您还可以创建一个截断字符串的方法,如下所示:

def truncate(string, truncate_after)
  return string if string.length < truncate_after

  string[0..(truncate_after - 1)] + '...'
end