为了账号安全,请及时绑定邮箱和手机立即绑定

js实现字符串切分数组

js实现字符串切分数组

慕标5832272 2019-04-13 08:37:24
有一个字符串varaString='123"3.13.23.3"45';现在要把字符串用空格分割成数组元素,但是""里面的不分割,组成[1,2,3,"3.13.23.3",4,5],这个怎么实现?
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

自己简单的写了下处理的方法。我的思路是:
先把字符串按照空格拆分为数组;
遍历数组,寻找数组中引号的开始和结束位置,把这中间的数据拼接为一个数据,存储到数组中;
非引号中间的数据,作为单独数据进行存储;
返回存储的数组。
functionwsplit(str){
varst=str.split('');//先按照空格拆分为数组
varstart=-1;
varresult=[],//存储结果
item='';//存储双引号中间的数据
for(vari=0,t=st.length;i//处理双引号中间的数据
if((st[i]+'').indexOf('"')>-1||start>-1){
//如果正好是双引号所在的数据
if((st[i]+'').indexOf('"')>-1){
if(start==-1){
item+=st[i]+'';
start=i;
}else{
//引号结束时,把item上拼接的数据压到result中
item+=st[i]+'';
result.push(item);
item='';
start=-1;
}
}else{
//引号中间的数据
item+=st[i]+'';
}
}else{
//引号两边的数据直接压入到数组中
result.push(st[i]+'');
}
}
returnresult;
}
varaString='1"23""3.13.23.3"45';
console.log(wsplit(aString));//['1','"23"','"3.13.23.3"','4','5']
                            
查看完整回答
反对 回复 2019-04-13
?
largeQ

TA贡献2039条经验 获得超7个赞

突然间让我涌起了想写一段正则表达式的豪情,修改代码如下:varaString='123"3.13.23.3"45"67"';varresult=aString.match(/\"\S[^\"]*\"|\S/g).map(function(str){returnstr.replace(/\"/g,'');});console.log(result);//['1','2','3','3.13.23.3','4','5','67']
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 1204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信