zoukankan      html  css  js  c++  java
  • 获取字符串实际长度(包含中英文)

    日常开发过程中,经常会遇到需要计算字符串的实际长度(包含中英文),今天整理下我平时使用的方法:

    方法一:使用charCodeAt()来判断字符编码

    charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
      <script>
        /**
         * 获取字符串实际长度(包含中英文)
         * @param str  要获得长度的字符串
         */
        var zfc = {};
        zfc.getStringLength = function (str) {
          var realLength = 0, len = str.length, charCode = -1;
          for (var i = 0; i < len; i++) {
            charCode = str.charCodeAt(i);
            if (charCode >= 0 && charCode <= 128)
              realLength += 1;
            else
              realLength += 2;
          }
          return realLength;
        };
        console.log(zfc.getStringLength('aaa获取字符sfdsf串实际长度(包含中英文)sdfdsf'))
      </script>
    </head>
    <body>
    
    </body>
    </html>
    

    方法二: 简化版使用charCodeAt()来判断字符编码 

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
      <script>
        /**
         * 获取字符串实际长度(包含中英文)
         * @param str  要获得长度的字符串
         */
        var zfc = {};
        zfc.getStringLength = function (str) {
          var len = str.length;
          var realLength = 0;
          for (var i = 0; i < len; i++) {
            if ((str.charCodeAt(i) & 0xff00) != 0) {
              realLength++;
            }
            realLength++;
          }
          return realLength;
        };
        console.log(zfc.getStringLength('aaa获取字符sfdsf串实际长度(包含中英文)sdfdsf'))
      </script>
    </head>
    <body>
    
    </body>
    </html>
    

    方法三: 先把中文替换成两个字节的英文,再计算长度推荐使用

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
      <script>
        /**
         * 获取字符串实际长度(包含中英文)
         * @param str  要获得长度的字符串
         */
        var zfc = {};
        zfc.getStringLength = function (str) {
          return str.replace(/[u0391-uFFE5]/g, 'aa').length;
        };
        console.log(zfc.getStringLength('aaa获取字符sfdsf串实际长度(包含中英文)sdfdsf'))
      </script>
    </head>
    <body>
    
    </body>
    </html>
    

      

  • 相关阅读:
    带你梳理Roach全量恢复的整体流程
    为AR&VR黑科技:以“自由视角”360度尽展舞台唯美
    一个15年的架构师谈“如何成为一名优秀的解决方案架构师”
    SARIF:DevSecOps工具与平台交互的桥梁
    “蚂蚁牙黑”太火,想玩就用ModelArts做一个!
    图神经网络,这到底是个什么?
    Python 面向对象进阶
    Python 装饰器
    SQL 存储过程中事务回滚
    python 迭代器协议和生成器
  • 原文地址:https://www.cnblogs.com/chenyablog/p/7883166.html
Copyright © 2011-2022 走看看