js更好地截取字符串

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

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

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

就可能被截取为:

“rssidea是残缺学习web……”

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


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

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

改进的代码:


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

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

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

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

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

标签:字符串,标题,js
0
投稿

猜你喜欢

  • java使用正则表达式查找包含的字符串示例

    2022-06-18 21:02:08
  • python中的生成器、迭代器、装饰器详解

    2022-03-01 20:36:46
  • Oracle 下医嘱执行函数

    2009-03-02 10:49:00
  • 使用Filter过滤python中的日志输出的实现方法

    2022-08-25 06:37:43
  • Host localhost is not allowed to conn

    2011-02-23 12:41:00
  • 如何设计一个成功的网站

    2007-09-07 10:33:00
  • Selenium 安装和简单使用的实现

    2023-12-01 07:22:55
  • Python常用模块之requests模块用法分析

    2023-12-30 15:11:49
  • Vue中导入excel文件的两种方式及使用步骤

    2024-05-21 10:16:20
  • Python Socket实现简单TCP Server/client功能示例

    2021-05-21 19:19:46
  • python实现TCP文件接收发送

    2021-08-25 00:56:46
  • CentOS 7下MySQL服务启动失败的快速解决方法

    2024-01-13 16:33:34
  • 2个asp防刷新程序代码

    2008-09-28 21:16:00
  • js实现炫酷的左右轮播图

    2024-04-22 22:31:40
  • Python快速生成随机密码超简单实现

    2022-08-07 19:26:09
  • 教你用Python脚本快速为iOS10生成图标和截屏

    2022-03-04 05:08:28
  • SQL Server小知识:Processor Affinity

    2008-11-24 20:50:00
  • sqlserver还原数据库的时候出现提示无法打开备份设备的解决方法(设备出现错误或设备脱)

    2024-01-16 11:37:38
  • python中编写config文件并及时更新的方法

    2021-08-01 05:44:39
  • Python Web框架Flask中使用七牛云存储实例

    2022-11-25 17:20:27
  • asp之家 网络编程 m.aspxhome.com