有一个字符串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']
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']
添加回答
举报
0/150
提交
取消