js更好地截取字符串
作者:canque 来源:canque博客 发布时间:2008-03-11 19:00:00
标签:字符串,标题,js
有的时候,我们为了保持网页的美观,需要将较长的文字在一定长度时截断。比如我们希望在列表中显示文章标题的前15个字,那么一个这样的标题:
“rssidea是残缺学习web技术的个人网站”
就可能被截取为:
“rssidea是残缺学习web……”
最常见的实现代码是(以javascript为例,php类似):
这样做有一些不好的地方。众所周知,在计算机里,数字、字母等是单字节,而汉字、全角字符等是双字节,也就是数字字母占的宽度和汉字所占宽度不一样。当我们希望截取相同的字符宽度的时候,这个方法就不好了。
更严重的是,在php等服务器端语言中,字符串长度按单字节长度计算,也就是说一个汉字的字符长度为2,所以当字符截取刚好在一个汉字中间截断的时候,会引起乱码现象。因为计算机无法正常显示半个汉字。
改进的代码:
简单说下思路,先把字符串分散到数组中,当然不是随意分散,而是按2个字节的长度分散,这步很关键。我使用的是正则表达式(似乎也没有其他办法):
如果遇到双字节字符([^\x00-\xff])就把双字节字符添加到数组,如果遇到单字节字符就把两个单字节字符添加到数组。
然后把问题转化为截取数组长度,问题解决!
相关文章推荐:ASP给长的标题加省略号...
这种方式有一些误差(你看出来了吗?),但是效率比较高。网上还有一种循环读取的方式,误差较小,但是效率变得低下。感兴趣的朋友可以自己搜寻。


猜你喜欢
- 做运维的朋友应该知道,公司IDC机房经常有上架、下架、报修和报废的服务器。如果服务器数量很多的时候很容易造成监控遗漏。  
- 上一章节我们学习了 excel 的读取模块 - xlrd ,今天章节将学习 excel 的写入模块 - xlsxwriter 。通过该章节的
- The Only Thing We Have To Fear Is Premature Standardization原文地址:http:/
- 1.变量的赋值操作只是多生成了一个变量,实际上还是指向同一个对象# -*- coding: utf-8 -*-class CPU: &nbs
- 一、安装matplotlib1)由于已安装anaconda,可直接打开anaconda prompt,再用命令pip install mat
- 本文实例讲述了Python数据结构与算法之常见的分配排序法。分享给大家供大家参考,具体如下:箱排序(桶排序)箱排序是根据关键字的取值范围1~
- 步骤很简单,直接进入主题。第一步:创建一个python项目。解析器什么的自己选择,环境目录默认就好。第二步:下载scrapy,步骤file-
- 阅读上一节:无序列表信息有时候是无序归纳的,有的却有着明确的顺序,在上一篇也提到了。那么简单的来想一下身边有哪些事物是有先后顺序的:操作步骤
- 1、灵活运用样式 熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custon Style来调用Style标准,
- asyncio 是 python 力推多年的携程库,与其 线程库 相得益彰,更轻量,并且协程可以访问同一进程中的变量,不需要进程间通信来传递
- mysql-connector-java与mysql版本的对应我们知道版本更新经常带来的问题就是兼容性问题。在编程过程中版本的错误选择很可能
- 使用破解补丁方法虽然麻烦,但是可用激活到2099年,基本上是永久激活了,毕竟在座各位能活到这个年份也是寥寥无几了吧!!步骤一、下载破解补丁,
- pytorch forwod函数在父类中的调用问题背景最近在研究Detetron2的代码结构时,发现有些网络代码里面没有forward函数,
- 朴素贝叶斯(Naive Bayes,NB):朴素贝叶斯分类算法是学习效率和分类效果较好的分类器之一。朴素贝叶斯算法一般应用在文本分类,垃圾邮
- 如下所示:import sysfrom PyQt5.QtWidgets import QMainWindow, QTextEdit, QAc
- HTTP请求方法GET:请求指定的页面信息,并返回实体主体。HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头POS
- 这篇文章主要介绍了python with (as)语句实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 前言:今天就开始讲Python中的模块篇了,模块是Python的重要组成部分,Python之所以可以写出多种多样的程序,其实跟模块的灵活运用
- 上边文章中提到win的性能监视器是监控数据库性能必备的工具,接下来我就给大家介绍一些常见的监控指标,其实无非就是磁盘,cpu,内存等硬件的运
- 目录Show Me The Code测试下效果效果PS另一种方法Show Me The CodeHTMLElement.prototype.