My Opera is closing 1st of March

Linux夜航船

Everything should be easy.

Subscribe to RSS feed

字符串限长显示:雕虫小技揭示是否重视细节

在许多网页上可以见到,为了限长显示字符串,却没有注意细节的处理,导致在中英文混杂时,会出现一些可以避免的情况。
如,对字符串作限长十字处理,有可能会让人看到这种情况:

一二三四五六七八九十...
1234567890...
linux and ...

而原本这是可以排得更好的。
以JavaScript而言,下面的函数即可做到这一点。

function setWords(string,limit,suffix) {
var count=0;
var result="";
for(var i=0;i<string.length;i++) {
if (string.charCodeAt(i)>=256) count+=2;
else count++;
result+=string.charAt(i);
if(count>=limit)break;
}
if(count<limit)return string;
if(count==limit && result==string)return string;
return result.substr(0,result.length-1) + suffix;
}

对于各种动态生成的网页,用不同的语言实现这样的功能也是相当容易的。
字符串限长示例网页.zip
February 2014
S M T W T F S
January 2014March 2014
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28