修改字符串a&b&c@a&b&c…中b的值并输出改变b值后的字符串
需求:车辆扫描PDA入库,每次入库的时候都要修改入库单的待入库数量,入库单中只有一个a&b:&@a&b&c a(仓位id)b(要求入仓数量)c(其它)的数据
解决方法:
/**
* @author jiangruliang
* @date 2018年9月27日11:43:11
* @Description 货物入仓 修改待入仓数量 待入仓字符串格式flag a:b:c@a:b:c a(仓位id)b(要求入仓数量)c(其它) ,此次入仓数量inStorageNum
*/
public class Test {
public static void main(String[] args) {
String waitStorageNum = "1&1&1@2&2&1@2&2&1@2&2&1".replaceAll("@", "&");
double inStorageNum = 6.5;
String[] strings = waitStorageNum.split("&");
StringBuilder b = new StringBuilder();
for (int i = 0; i < strings.length; i++) {
//(i + 2) % 3 为要求入仓数量
if ((i + 2) % 3 == 0) {
if (Double.parseDouble((strings[i])) > inStorageNum && inStorageNum >= 0) {
b.append(String.valueOf(Double.parseDouble((strings[i])) - inStorageNum)).append("&");
} else if ((Double.parseDouble((strings[i])) <= inStorageNum && inStorageNum >= 0)) {
b.append("0").append("&");
} else {
b.append(strings[i]).append("&");
}
inStorageNum = inStorageNum - Double.parseDouble((strings[i]));
}
//(i + 1) % 3 为(其它)并排除最后一位
if ((i + 1) % 3 == 0 && i != strings.length - 1) {
b.append(strings[i]).append("@");
}
//(i + 1) % 3 为仓位id
if (i % 3 == 0) {
b.append(strings[i]).append("&");
}
//最后一位
if (i == strings.length - 1) {
b.append(strings[i]);
}
}
System.out.println(b);
}
}
上述代码输出结果