2011-09-06 71 views
0

我遇到了一些字符串溢出其容器的問題。我當然可以使用overflow:hidden,但它看起來並不好,因爲我更喜歡text-overflow:ellipsis。然而,跨平臺的支持最好,我發現現有的解決方案不允許字符串包含空格。截斷沒有空白的字符串

所以,我的解決方法是截斷Javascript中的字符串,如果字符串不包含前N個字符的任何空格。顯然,如果用戶沒有安裝正確的字體或放大字體,它將無法正常工作,但在這種情況下,overflow:hidden將會啓用,所以我沒有問題。

現在我的問題是,我如何以儘可能高效的方式來做到這一點?我將不得不循環遍歷前N個字符,看看每個字符是否都是空格,如果它們都不是,請執行string.substring(0,N-3),然後向它附加省略號?

+0

相關http://stackoverflow.com/questions/536814/insert-ellipsis-into-html-tag -if-content-too-wide – Soren

回答

2

切忌將循環做簡單的「是有空間」檢測:

var shortened = yourstring.substr(0,N); 
if (shortened.indexOf(' ') == -1) { 
    var shortened = shortened.substr(0, N-3) + '...'; 
} 
+0

您可能想要使用lastIndexOf()來代替以獲得最右邊的空格。 – Soren

+0

如果我正在閱讀正確的問題,無所謂。字符串中任意位置的任何空格的存在意味着不需要省略號。 –

+0

工作很好。我不得不添加一個檢查,看看字符串是否比N短,但除此之外,工作正常。謝謝! –