您的位置:钱柜娱乐777官网登入> 实例代码>JS实例

如何截取指定长度字符串区分汉字和字符

2017-2-11 12:55| 发布者: admin| 查看: 264| 评论: 0|来自: 钱柜手机网页版

截取字符串的操作在网页中十分常见,比如在新闻列表中,往往需要将新闻标题的长度规定在一个恰当的范围之内,这个时候就需要进行截取字符串的操作。实现方式有多重,比如可以使用String对象的substr()方法实现此功能,不过此方法有时候并不能满足我们的需求,因为有些时候需要区分汉字还是英文字符,而一个英文字符占据一个字节,一个汉字占据两个字节,所以要加以区分。下面就介绍一下如何实现次效果,代码实例如下:

[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="" />
<title>钱柜手机网页版</title>
<script type="text/javascript">
function cutString(str, len) {
  var strlen = 0;
  var restr = "";
  for (var i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) > 128) {
      strlen += 2;
    }
    else {
      strlen++;
    }
    restr += str.charAt(i);
    if (strlen >= len) {
      return restr;
    }
  }
  return restr;
}
var mystring = "hello,欢迎来到钱柜手机网页版"
var num = 10;
alert(cutString(mystring, num));
</script>
</head>
<body>
 
</body>
</html>

以上代码可以截取指定长度的字符串,并且能够区分汉字和英文字符,下面就简单介绍一下如何实现此效果:

一.实现原理:

通过字符串的length属性可以取得字符串中字符的数目,它是不区分汉字和英文字符的,然后通过for循环来遍历它们,并且通过charCodeAt()函数可以获得相应索引值字符的ASCII码值,因为英文字符的ASCII码值最大为127,所以小128即是英文字符,大于128即是汉字,如果是汉字则strlen值加2,如果是英文字符则加1,并且将相应索引的字符添加到restr中,最后判断strlen值是否已经大于等于指定长度,如果为真则返回restr,否则继续进行for循环,如果直到for循环完成也没有超过指定长度,那么最后返回该字符串。

二.代码注释:

1.var strlen=0用于存储每一次for循环后字符串的长度。

2.var restr=""用于存储每一次for循环后的字符串。

3.for循环用来便利字符串中的每一个字符,这里的字符是不区分中英文的。

4.if(str.charCodeAt(i)>128)用判断指定索引的字符是英文字符还是汉字,如果是汉字strlen加2,否则加1。

5.restr+=str.charAt(i);将指定索引的字符添加到restr。

6.if(strlen>=len)判断是否已经超过指定长度,超过则返回restr,否则继续执行for循环。

7.最后一个return rest:如果整个字符串长度都没有超过指定长度,那么原样返回。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部