JS显示指定字符数,避免一个中文两个字符的情况

0x00

  level: 0x01

0x01

代码如下:

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<body>

<script type="text/javascript">

var txt = "Aa要a国a啊b不a";
document.write("<br>");
document.write(getSubStr(txt, 4));

/**
 * 返回指定显示字符数的函数(考虑中文和大写)
 * 默认10个字符
 * 中文和大写占两个字符
 * 可能会返回 count + 1 个字符
 *
 * @param endIndex demo中传了4
 */
function getSubStr(str, endIndex){
  var dualRegex = /[A-Zu4e00-u9fa5]/g;
  var substr = str.substring(0, endIndex);
  var dualNum = substr.match(dualRegex) == null ? 0 : substr.match(dualRegex).length;
  var count = dualNum * 2 + (substr.length - dualNum);
  // document.write(count + "...");
  if (str.length == substr.length)// 是原来那个字符时,直接返回原来的
    return str;
  if (count >= 10)// 显示字符数量
    return substr + (str.length == substr.length ? "" : "...");
  return getSubStr(str, endIndex + 1);
}
</script>

</body>
</html>

  

原文地址:https://www.cnblogs.com/feng2015/p/4263793.html