对于aaa||||||||||||||||||这种类型的数据,String的split方法返回的长度是1,后续代码会有问题,用下面的newsplit方法可以解决这个问题,记录一下。
public static void main(String[] args) {
String target = "aaa||||||||||||||||||";
System.out.println(target);
Map<String, String> map = new HashMap<>();
map.put("s2", "s2value");
map.put("s5", "s5value");
map.put("s7", "s7value");
//StringUtils.split()
String[] array = newsplit(target, "|");
//System.out.println("array length = " + array.length);
for (Map.Entry<String, String> m : map.entrySet()) {
//System.out.println("key:" + m.getKey() + " value:" + m.getValue());
Integer ind = Integer.parseInt(m.getKey().substring(1)) - 1;
if (StringUtils.isBlank(array[ind])) {
array[ind] = m.getValue();
}
}
//array[5] = map.get("s5");
target = StringUtils.join(array, "|");
System.out.println(target);
}
public static String[] newsplit(String strInfo, String strSplit) {
//第1步计算数组大小
int size = 0;
int index = 0;
do{
size++;
index++;
index = strInfo.indexOf(strSplit ,index);
}while(index!=-1);
String[] arrRtn= new String[size]; //返回数组
//-------------------------------------------------------
//第2步给数组赋值
int startIndex = 0;
int endIndex = 0;
for(int i = 0; i < size; i++){
endIndex = strInfo.indexOf(strSplit, startIndex);
if(endIndex == -1) {
arrRtn[i] = strInfo.substring(startIndex);
} else {
arrRtn[i] = strInfo.substring(startIndex, endIndex);
}
startIndex = endIndex+1;
}
return arrRtn;
}
最后修改于 2019-07-04 17:01:34
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

