2010-06-30 109 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