2010-06-30 76 views
1

我在我的Rails模型中有一个最大长度为255的字段。如何获取Unicode字符串的Ruby子字符串?

我正在将数据导入到它中,有时导入的数据的长度> 255.我愿意简单地将它切掉我最终得到最大可能的有效字符串。

我本来试图做的,为了得到这个领域[0,255],但其实这会砍的权利,通过字符尾随的Unicode。当我将这些数据保存到数据库中时,它会引发错误,告诉我由于角色已减半或变为四舍五入而导致我的角色无效。

什么是砍掉Unicode字符来让他们适应我的空间是推荐的方式,而不会拿刀砍单个字符?

回答

2

呃。看起来像截断和朋友喜欢玩chars,但不是他们的小表弟bytes。下面是你的问题尽快得到答案,但我不知道是否有一个更简单明了,优雅问题我的意思回答

def truncate_bytes(string, size) 
    count = 0 
    string.chars.take_while{|c| (a += c.bytes.to_a.length) <= size }.join 
end 

给看看Chars class of ActiveSupport