• 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;
    }
    
  • 相关阅读:
    方法的重载
    this用法
    简单的随机数 代码和笔记
    java内存简单剖析
    day 28
    day 27
    day 26
    day 25
    day 24
    day 23
  • 原文地址:https://www.cnblogs.com/ZerlinM/p/14145320.html
Copyright © 2020-2023  润新知