限制汉字的长度(包括处理英文字母)

简介:   一个汉字的长度等于两个英文字母的长度。  所以在限制字符串长度的时候,需要将两者的类型转换成一致,处理方法如下:     /**字符串截取参数 str 字符串 len 长度。

  一个汉字的长度等于两个英文字母的长度。

  所以在限制字符串长度的时候,需要将两者的类型转换成一致,处理方法如下:

     

/**
字符串截取

参数
  str <string> 字符串
  len <integer> 长度。
  sufix <string> 后缀

返回
  <string>
*/
function subString(str, len, sufix) {
  var r = /[^\x00-\xff]/g;  //匹配双字节字符(包括汉字在内),一个双字节字符长度计2
  var m;

  if (str.replace(r, '**').length > len) {
    m = Math.floor(len / 2);
  //做法:将字符串的每个字符转化成双字节,然后判断该字符串的长度(简化操作:将字符串取一半,减少循环的次数)
    for (var i = m, l = str.length; i < l; i++) {
      if (str.substr(0, i).replace(r, '**').length >= len) {//截取从0到i的字符串,然后替换成双字节的字符
        return str.substr(0, i) + sufix;
      }
    }
  }

  return str;
};

 附属:正则常用的用法  http://469957559.iteye.com/blog/1999623

目录
相关文章
|
8月前
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
105 1
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
|
存储
ASCII码可以表示汉字吗?
ASCII码可以表示汉字吗?
3649 0
hutool 判断字符串是否全部为字母组成,包括大写和小写字母和汉字
hutool 判断字符串是否全部为字母组成,包括大写和小写字母和汉字
|
2月前
使用字母
【10月更文挑战第25天】使用字母。
27 1
|
3月前
将小写字母全部转换成大写字母
【10月更文挑战第17天】将小写字母全部转换成大写字母。
74 5
|
7月前
统计出其中英文字母、空格、数字和其它字符的个数
【6月更文挑战第8天】统计出其中英文字母、空格、数字和其它字符的个数。
51 9
|
8月前
|
C语言
ASCII编码的52个大小写字母
ASCII编码的52个大小写字母
4544 1
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符
输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
284 0