需求:
编写一个截取字符串的函数,输入为一个字符串和一个字节数,输出为按字节截取的字符串。
思路:
一、字节数判断
1、定义一个变量记录字符串字节数
2、利用正则筛选汉字和大写字母
3、将字符串转为数组进行遍历查询,并且将各个字符的字节数进行累加
4、返回字符串的字节数
二、字符串按照字节数截取
思路基本和判断一样,增加一个判断长度截取,并且返回新的字符串即可。
//字节判断(中文2,英文小写1,大写1.5)
function fontLenth(thisVal){
var thisVLength=0;
var thisA=thisVal.split('');
var rep=/[^\x00-\xff]/;
var repABC=/^[A-Z]+$/;
for(var i=0;i<thisA.length;i++){
if(rep.test(thisA[i])){
thisVLength+=2;
}else if(repABC.test(thisA[i])){
thisVLength+=1.5;
}else{
thisVLength++;
}
}
return thisVLength;
}
//字节截取(中文2,英文小写1,大写1.5)
function fontCut(thisVal,thisCutLength){
var thisVlength=0;
var thisB=[];
var thisA=thisVal.split('');
var rep=/[^\x00-\xff]/;
var repABC=/^[A-Z]+$/;
for(var i=0;i<thisA.length;i++){
if(rep.test(thisA[i])){
thisVlength+=2;
}else if(repABC.test(thisA[i])){
thisVlength+=1.5;
}else{
thisVlength++;
}
if(thisVlength>thisCutLength){
return thisB.join('');
}else{
thisB.push(thisA[i]);
}
}
return thisB.join('');
}