删除字符串中非中英文字符并返回一个数组和按长度分割字符串并返回字
2018-08-01 本文已影响11人
MrOldK
今天做了一个项目,里面涉及到处理字符串并返回处理完成生成的数组,其实就是一个小方法,不过因为脑子这一阵萌萌哒,就顺便写下来。
就不解释了,挺简单的一段。代码如下:
//删除字符串中非中英文字符并返回一个数组
function getMsg1(msg){
var msgLen = msg.length;
var exp = /^[A-Za-z0-9\u4e00-\u9fa5]+$/;
//情话初始数组
var _msgArr = [];
//情话最终数组
var msgArr = [];
//将非中英文字符替换为空格
for(var i=0;i<msgLen;i++){
if(!exp.test(msg[i])){
msg = msg.replace(msg[i],' ');
}
}
//生成初始情话数组
_msgArr = msg.split(' ');
var _msgArrLen = _msgArr.length;
//处理情话数组中为空的一项
for(var a=0;a<_msgArrLen;a++){
if(_msgArr[a]){
//最终情话数组
msgArr.push(_msgArr[a])
}
}
return msgArr;
}
//按长度分割字符串并返回字符串数组
function getMsg2(msg,cutNum){
msg = msg.replace(/\s+/g,'');
var len2 = msg.length;
var begin = 0;//开始截取的位置索引
var arr = [];//最后的结果数组
var num = 0;//cutNum的整数倍
var times = 0;//截取的次数
var sum = 0;//总的截取的字符数量
var cont = true;
if(len2>cutNum){
for(var i=0;i<len2;i++){
if(len2 - sum < cutNum){
if(cont){
arr.push(msg.substring(num,len2));
cont=false;
}
}else{
num++;
if(num%cutNum == 0){
times++;
sum = times*cutNum;
arr.push(msg.substring(begin,num));
begin+=cutNum;
}
}
}
}else{
arr.push(msg);
}
return arr;
}
getMsg2是项目中用到的一个处理方法,不过在我们的测试人员测试过程中,编写的测试用例不能完全满足,有遗漏的字符串种类,所以经过几次修改。修改的核心是删除了字符串中的空格,因为存在一个或多个空格的字符串,在不考虑空格位置的情况下,有可能得出的字符串数组会有字符串截取不全的情况。