zoukankan      html  css  js  c++  java
  • JS 获取字符串长度,截取字符串

    截取中英文字符串,一个汉字相当于2个字符,多余部分用...补全,比如要保留3个字:
    '你好'=>'你好'
    '你好啊啊'=>'你好啊...'
    '你好aaa'=>'你好aa...'
    '你hao啊'=>'你hao...' 等等

    代码如下:

    cutStr = (str, len) => {
      let charLength = 0;
      for (let i = 0; i < str.length; i++) {
        charLength += encodeURI(str.charAt(i)).length > 2 ? 1 : 0.5;
        if (charLength >= len) {
          const subLen = charLength === len ? i + 1 : i;
          return `${str.substr(0, subLen)}...`;
        }
      }
      return str;
    }
    

    升级版(常用):

    比如元素宽度可以放下4个中文字符,那么当str长度为4时,则不省略,代码如下:

    getLength = (str) => {
      let charLength = 0;
      for (let i = 0; i < str.length; i++){
        charLength += encodeURI(str.charAt(i)).length > 2 ? 1 : 0.5;
      }
      return charLength;
    }
    cutStr = (str, len) => {
      if(getLength(str)>len+1) {
        let charLength = 0;
        for (let i = 0; i < str.length; i++) {
          charLength += encodeURI(str.charAt(i)).length > 2 ? 1 : 0.5;
          if (charLength >= len) {
            const subLen = charLength === len ? i + 1 : i;
            return `${str.substr(0, subLen)}...`;
          }
        }
      }
      return str;
    }
    
  • 相关阅读:
    XML相关资源
    【翻译】Windows下文件的命名
    显示文件的16进制编码(C++)
    函数模板的匹配
    最新的flex4.1和as3.0的帮助文档
    Flash/Flex 框架简介—PureMVC
    textfield的诡异
    灵异的bug
    互联网公司的发展都在于专注和坚持。
    python内置数据类型
  • 原文地址:https://www.cnblogs.com/ZerlinM/p/14145320.html
Copyright © 2011-2022 走看看