ST,GS,+   93.8,kg
怎么取93.8?前面的ST,GS,+和后面的,kg是固定的
@1     0.0 g  @82.43440 g @9      0 pcs
怎么取0.0和2.43440和0? 前面的@1和@8/@9这些也是固定的。直接解析也可以,不过用正则表达式是否更好解析呢?

解决方案 »

  1.   

    public static void main(String[] args) {
    String str = "ST,GS,+   93.85,kg";
    Pattern p = Pattern.compile("ST,GS,\\+\\s+(\\d+(?:\\.\\d+)?),kg");
    Matcher m = p.matcher(str);
    if (m.find())
    System.out.println(m.group(1));
    str = "@1     0.0 g  @82.43440 g @9      0 pcs";
    p = Pattern
    .compile("@1\\s+(\\d+(?:\\.\\d+))\\s+g\\s+@(\\d+(?:\\.\\d+)+)\\sg\\s@\\d\\s+(\\d+)");
    m = p.matcher(str);
    if (m.find()) {
    for (int i = 1; i <= m.groupCount(); i++) {
    System.out.println(m.group(i));
    }
    } }输出:
    93.85
    0.0
    82.413440
    0
      

  2.   

    ST,GS,+   93.8,kg
    怎么取93.8?前面的ST,GS,+和后面的,kg是固定的
    ——数据如果是逐行读取的,考虑直接:
    ——String num = line.replaceAll("\\D+([\\d\\.]+)\\D+", "$1");@1     0.0 g  @82.43440 g @9      0 pcs
    怎么取0.0和2.43440和0? 前面的@1和@8/@9这些也是固定的。
    ——数据如果是逐行读取的,考虑直接:
    ——String[] nums = line.replaceAll("\\s|[[a-zA-Z]", "").split("@\\d");