网络编程
位置:首页>> 网络编程>> JavaScript>> js更好地截取字符串

js更好地截取字符串

作者:canque 来源:canque博客 发布时间:2008-03-11 19:00:00 

标签:字符串,标题,js

有的时候,我们为了保持网页的美观,需要将较长的文字在一定长度时截断。比如我们希望在列表中显示文章标题的前15个字,那么一个这样的标题:

“rssidea是残缺学习web技术的个人网站

就可能被截取为:

“rssidea是残缺学习web……”

最常见的实现代码是(以javascript为例,php类似):


这样做有一些不好的地方。众所周知,在计算机里,数字、字母等是单字节,而汉字、全角字符等是双字节,也就是数字字母占的宽度和汉字所占宽度不一样。当我们希望截取相同的字符宽度的时候,这个方法就不好了。

更严重的是,在php等服务器端语言中,字符串长度按单字节长度计算,也就是说一个汉字的字符长度为2,所以当字符截取刚好在一个汉字中间截断的时候,会引起乱码现象。因为计算机无法正常显示半个汉字。

改进的代码:


简单说下思路,先把字符串分散到数组中,当然不是随意分散,而是按2个字节的长度分散,这步很关键。我使用的是正则表达式(似乎也没有其他办法):

如果遇到双字节字符([^\x00-\xff])就把双字节字符添加到数组,如果遇到单字节字符就把两个单字节字符添加到数组。

然后把问题转化为截取数组长度,问题解决!

相关文章推荐:ASP给长的标题加省略号...

这种方式有一些误差(你看出来了吗?),但是效率比较高。网上还有一种循环读取的方式,误差较小,但是效率变得低下。感兴趣的朋友可以自己搜寻。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com