我对Ruby非常陌生并且正在寻找解决方案。
基本上我有[0>形式的哈希字符串,1>字符串]等。
我想运行一个循环,它可以计算散列中字符串中的字符数,如果达到限制,则应该在该点剪切字符串的结尾并替换为' ...&# 39;
示例:
Say I set my character count at 10:
Hello World!
Would shorten to:
Hello Worl...
值得注意的是,这个哈希是从一个数组创建的,因此如果在哈希转换之前认为它更明智,那也没关系。任何建议都非常感谢。
答案 0 :(得分:1)
如果您愿意混合ActiveSupport gem等String#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