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

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

目录
相关文章
|
6月前
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
84 1
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
|
存储
ASCII码可以表示汉字吗?
ASCII码可以表示汉字吗?
3475 0
|
6月前
|
C语言
ASCII编码的52个大小写字母
ASCII编码的52个大小写字母
3379 1
|
6月前
|
自然语言处理
字符范围
字符范围
107 2
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符
输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符
输出英文字母,空格,数字,其他字符的个数
输出英文字母,空格,数字,其他字符的个数
|
PHP
获取字符串中最后一个字母前面(包含这个字母)和最后这个字母后面的字符串...
获取字符串中最后一个字母前面(包含这个字母)和最后这个字母后面的字符串...
193 0
|
测试技术
汉字数字转阿拉伯数字
# 问题来源 # 这个问题,是看到有人提到带中文数字的章节标题,要排序的问题引起的。比如对于: ```python title_list = [ '第一章', '第三章', '第五章', '第四章', '第二章', ] ``` 想“正确”排序的话,你直接 ``title_list.sort()`` 是不行地: ```bash zys@tower:~$ py
781 0