2013-04-17 51 views
-1

是否有ruby \ rails方法來確定字符串長度? (下面有一個例子,其中ab的長度等於10個字符,但實際長度很不相同)確定字符串的實際長度不僅僅是字符數

例如,
一個= lllllllllll
B = WWWWWWWWWWW

字體,也應考慮

P.S.
結束了在客戶端使用https://github.com/tbasse/jquery-truncate

+0

[用Javascript計算文本寬度]可能的副本(http://stackoverflow.com/questions/118241/calculate-text-width-with-javascript) –

+2

這是客戶端技術的工作。查看鏈接。 –

+1

使用單間隔字體,你得到這個權利。 – fotanus

回答

0

的反應是這裏

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 
+0

我擔心的表現將不會是恆星:) –

+0

@SergioTulentsev當然......它比真正的答案更「黑客」。我更喜歡上一個鏈接中描述的字符長度近似方法。更高效,更少破解。 – pierallard

+0

有沒有通過Font方法獲得像素長度的方法? – user3163916

0

是絕對沒有辦法知道該字符串將如何廣泛被以像素爲單位,從服務器側。您可以通過使用您在CSS中指定的相同字體呈現字符串來進行猜測,但最終用戶可以在瀏覽器中覆蓋這些設置,從而使您的猜測無效。或者,用戶可能沒有你所做的字體,並且瀏覽器用一個類似的家族替代了某個字符的寬度。結果會再次與你想象的不同。

如果可能的話,唯一的方法就是在用戶的瀏覽器中使用JavaScript,並根據任何用戶CSS指定的最終渲染字體進行計算,然後將其返回給您的服務器進一步處理,但是這真的打破了網絡和瀏覽器的工作原理。

相關問題