我遇到了一些问题,其中一些字符串溢出了容器。我当然可以使用溢出:隐藏,但它看起来不那么好,因为我更喜欢文本溢出:省略号。但是,对此的跨平台支持充其量只是,并且我发现的现有解决方案如果包含空格,则不允许字符串换行。
所以,我的解决方法是在Javascript中截断字符串,如果字符串不包含前N个字符的任何空格。显然,如果用户没有安装正确的字体或放大了它们,它将不会按预期工作,但在这种情况下,溢出:隐藏将启动,所以我没关系。
现在我的问题是,我怎样才能以尽可能高效的方式做到这一点?我是否必须遍历前N个字符并查看每个字符是否为空格,如果它们都不是,请执行string.substring(0,N-3)然后为其添加省略号?
答案 0 :(得分:2)
不应该循环做简单的“有空格”检测:
var shortened = yourstring.substr(0,N);
if (shortened.indexOf(' ') == -1) {
var shortened = shortened.substr(0, N-3) + '...';
}