题目参考来源: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兼容性 |
|
|










网友评论