将字符串按照某一规定切割排列

最近做了一个项目,需要与第三方接口联调,传过去的参数有一定的规则。

规则如下:

1、假设有参数zzz=4&zzz=2&&ZZZ=3,参数”zzz””zzz”” ZZZ”进行排序,ZZZ<zzz,于是拼出的字符串为:” ZZZ3zzz42”

2、如果参数需要传多个同名参数时,例如key=value1,key=value2拼串只需key-value1value2这样,拼出的串里面,key只出现一次。

3、key-values对按key的字母升序排列,同一key对应多value的情况,value按出现顺序排列,不再按字母排序。


public String test(String ...strings){
		
		List<String> stringList = new ArrayList<String>();	//接受原有的字符串
		List<String> stringList1 = new ArrayList<String>();	//重新排列的字符串
		for(String str : strings){
			stringList.add(str);
		}
		
		while(true){
			int i = 0;
			int index = i;
			for(int j=0;j<stringList.size();j++){
				if(stringList.get(index).substring(0, stringList.get(i).indexOf("=")).compareTo(stringList.get(j).substring(0, stringList.get(j).indexOf("=")))>0){				
					index = j;
				}
			}
			stringList1.add(stringList.get(index));
			stringList.remove(index);
			if(stringList.size() == 0){
				break;
			}
		}

		String sign = "";
		List<String> key = new ArrayList<String>();
		List<String> value = new ArrayList<String>();
		for(String str : stringList1){
		    key.add(str.substring(0, str.indexOf("=")));
		    value.add(str.substring(str.indexOf("=")+1));
		};
		for(int i=0;i<stringList1.size();i++){
			if(i == 0){
				sign = sign.concat(key.get(0));
			}
			else if(!key.get(i).equals(key.get(i-1))){
				sign = sign.concat(key.get(i));
			}
			sign = sign.concat(value.get(i));
		}
		return sign;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值