字符串分割

假设现在有如下字符串:  
str="1/1,A,0.1*1/1,B,0.2*1/2,A,0.2*1/3,B,0.2*1/4,A,0.1*1/4,B,0.1"  
现在按照1/1,1/2,1/3,1/4进行分别输出如下格式(当当日没有数据时则用”-“代替):  
1/1 A 0.1  
1/1 B 0.2  
1/2 A 0.2  
1/2 B -  
1/3 A -  
1/3 B 0.2  
1/4 A -  
1/4 B 0.1  

请高手指点一下


回复讨论(解决方案)

var str="1/1,A,0.1*1/1,B,0.2*1/2,A,0.2*1/3,B,0.2*1/4,A,0.1*1/4,B,0.1";
    var reg=/\d\/\d.*?(?=(?:\d\/\d)|$)/g;
    var res=str.match(reg).sort();
    var o={};
    res.forEach(function(item){
        var key=item.match(/\d\/\d/);
        if(!o[key]){
            o[key]=[];
        }
        o[key].push(item.replace(/,/g,' '));
    });
    var keys=Object.keys(o);
    keys.forEach(function(item){
       if(o[item].length==1){
           if(o[item][0].indexOf('A')==-1){
               o[item].unshift(item+' A -');
           }else{
               o[item].push(item+' B -');
           }
       }
    });
    var arr=[];
    keys.forEach(function(item){
        arr.push.apply(arr,o[item]);
    });
    console.log(arr);

没有数据的时候字符串格式是什么样子的

var str="1/1,A,0.1*1/1,B,0.2*1/2,A,0.2*1/3,B,0.2*1/4,A,0.1*1/4,B,0.1*1/5,A*1/6,B,";
		var newStr=str.replace(/[A-Z,](?=\*|$)/g,function(matchStr){
			return /[A-Z]/.test(matchStr)?matchStr+' -':matchStr+'-';
		});
		newStr=newStr.replace(/,/g,' ').replace(/\*/g,'\n');
		console.log(newStr);
		
		
来源:itnose

上一篇: asp 数据分割合并

下一篇: 怎样获取这个二维数组,通过ajax提交?

分享到: 更多