算法4:截断字符串:字符串指定长度溢出替换为省略号
function s(w,len){
if(w.length<=len){
return w
}else{
return w.slice(0,len)+"…"
}
}
s("You对方是否",6) //"You对方是…"
算法5:指定长度分割字符串:
以下涉及的方法:
slice(start处,end处)字符串
splice() 方法向数组中添加/删除项目,然后返回被删除的项目。splice(index,howmany,item1,.....,itemX)
方法1:slice
function str(w,len){
w=w.toString();
var arr=[];
if(len<1||w.length==len){
return "指定分割长度无意义"
}else{
for (var i=0; i<w.length; i+=len) {
arr.push(w.slice(i,i+len))
}
}
return arr
}
str("123",2)//Array [ "12", "3" ]
str(["a", "b", "c", "d","e"], 2);//这种方式输入的需注释掉 w=w.toString();
方法2:splice
function str(w,len){
w=w.toString();
var arr=[];
if(len<1||w.length==len){
return "指定分割长度无意义"
}else{
for (var i=0; i<w.length; i+=len) {
arr.push(w.split("").splice(i,len))
}
}
return arr
}
str("123",2)
// 0: Array [ "1", "2" ]
// 1: Array [ "3" ]
// length: 2
错误记录:分割长度如输入为数组则会出错
因为当第3次执行时w.length=1>i for循环已结束,解决方法:需要将数组先转为字符串
function str(w,len){
w=w.join("")
var arr=[];
if(len<1||w.length==len){
return "指定分割长度无意义"
}else{
for (var i=0; i<w.length; i+=len) {
arr.push(w.split("").splice(i,len))
}
}
return arr
}
str(["a", "b", "c", "d","e"], 2);
此处只是单独尝试这两种方法坐对比,也可以处理下做成通用的,比如
if(type(w)!==arr)
w=w.toString();