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-Z\u4e00-\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>

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。