是否有ruby \ rails方法來確定字符串長度? (下面有一個例子,其中a
和b
的長度等於10個字符,但實際長度很不相同)確定字符串的實際長度不僅僅是字符數
例如,
一個= lllllllllll
B = WWWWWWWWWWW
字體,也應考慮
P.S.
結束了在客戶端使用https://github.com/tbasse/jquery-truncate
是否有ruby \ rails方法來確定字符串長度? (下面有一個例子,其中a
和b
的長度等於10個字符,但實際長度很不相同)確定字符串的實際長度不僅僅是字符數
例如,
一個= lllllllllll
B = WWWWWWWWWWW
字體,也應考慮
P.S.
結束了在客戶端使用https://github.com/tbasse/jquery-truncate
的反應是這裏
How do I calculate a String's width in Ruby?
the_text = "TheTextYouWantTheWidthOf"
label = Draw.new
label.font = "Vera" #you can also specify a file name... check the rmagick docs to be sure
label.text_antialias(true)
label.font_style=Magick::NormalStyle
label.font_weight=Magick::BoldWeight
label.gravity=Magick::CenterGravity
label.text(0,0,the_text)
metrics = label.get_type_metrics(the_text)
width = metrics.width
height = metrics.height
我擔心的表現將不會是恆星:) –
@SergioTulentsev當然......它比真正的答案更「黑客」。我更喜歡上一個鏈接中描述的字符長度近似方法。更高效,更少破解。 – pierallard
有沒有通過Font方法獲得像素長度的方法? – user3163916
是絕對沒有辦法知道該字符串將如何廣泛被以像素爲單位,從服務器側。您可以通過使用您在CSS中指定的相同字體呈現字符串來進行猜測,但最終用戶可以在瀏覽器中覆蓋這些設置,從而使您的猜測無效。或者,用戶可能沒有你所做的字體,並且瀏覽器用一個類似的家族替代了某個字符的寬度。結果會再次與你想象的不同。
如果可能的話,唯一的方法就是在用戶的瀏覽器中使用JavaScript,並根據任何用戶CSS指定的最終渲染字體進行計算,然後將其返回給您的服務器進一步處理,但是這真的打破了網絡和瀏覽器的工作原理。
[用Javascript計算文本寬度]可能的副本(http://stackoverflow.com/questions/118241/calculate-text-width-with-javascript) –
這是客戶端技術的工作。查看鏈接。 –
使用單間隔字體,你得到這個權利。 – fotanus