修改字符串a&b&c@a&b&c....中b的值并输出改变b值后的字符串

本文介绍了一种在Java中批量修改字符串数组中特定字段的方法,适用于货物入仓时更新待入库数量。通过解析字符串,根据指定规则更新数值,并重新构建字符串。

修改字符串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);
  }
}

上述代码输出结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值