2011-09-06 125 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短,但除此之外,工作正常。谢谢! –