单行文本打点

作者: ShineaSYR | 来源:发表于2019-12-27 00:30 被阅读0次

题目参考来源:JS小测42
PS:部分实现方法有借鉴他人的答案
jsbin在线demo

1.普通文本居中打点处理

要求:若字符个数大于15个,则前面和后面分别保留6个字符

function strMid(str, len) {
  var k = len || 15;
  if(str && str.length > k) {
    var j = Math.floor((k - 3) / 2);
    return str.slice(0,k - j - 3) + '...' + str.slice(-j);
  } else {
    return str;
  }
}
console.log(strMid('赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张'));
//  "赵钱孙李周吴...尤许何吕施张"

2.文件名文本打点

要求:若文件名字符个数大于15个,则保留后缀名以及后缀名前一个字符,以及开头若干字符,中间使用字符'...'表示(算3个字符),最终字符长度为15。

function strFilename(str, len) {
  var k = len || 15;
  if(str && str.length > k) {
    if(/\./.test(str)) {
      var lastStr = str.slice(str.lastIndexOf('.') - str.length - 1);
      return str.slice(0, k - 3 - lastStr.length) + '...' + lastStr;
    } else {
       var j = Math.floor((k - 3) / 2);
      return str.slice(0,k - j - 3) + '...' + str.slice(-j);
    }
  } else {
    return str;
  }
}
console.log(strFilename('赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张.png.jpg')); 
//  "赵钱孙李周吴郑...g.jpg"

More:var title = '🎅🎄🎁❤️🚀圣诞快乐,系列有9了';

知识点

substring VS slice

参考链接https://segmentfault.com/a/1190000017029243

比较 substring slice
代码使用
String兼容性
Array兼容性

"."位置匹配

比较 indexOf lastIndexOf
String兼容性
Array兼容性

相关文章

网友评论

    本文标题:单行文本打点

    本文链接:https://www.haomeiwen.com/subject/ddrroctx.html