js进行字符串的字节判断和截取

来源:互联网 发布:ubuntu 14.04 ant 编辑:程序博客网 时间:2024/06/07 23:32

需求:

        编写一个截取字符串的函数,输入为一个字符串和一个字节数,输出为按字节截取的字符串。

思路:

一、字节数判断

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('');
}

阅读全文
0 0