Java String Manipulation: extracting integer and float from string based on pattern

后端 未结 2 540
我在风中等你
我在风中等你 2021-01-07 03:42

I have the following two possible contents of a String. Obviously the amounts always vary and I would like to extract the key information and

Case 0:   pri         


        
相关标签:
2条回答
  • 2021-01-07 04:18

    That looks like a job for regex:

    String pricesString = "10+: $1.46 100+: $0.16 500+: $0.04";
    Pattern p = Pattern.compile("(\\d+)\\+: \\$(\\d\\.\\d\\d)");
    Matcher m = p.matcher(pricesString);
    while (m.find()) {
        Intger.parseInt(m.group(1));
        Double.parseDouble(m.group(2));
    }
    

    You can choose between the 3 cases by a simple .length() check. The code above is for the last case. The rest is eaiser

    0 讨论(0)
  • 2021-01-07 04:24

    Apply the regex \d+\.?\d* as often as you can. The array of the results can be checked whether it contains 0, 1 or more values.

    If there are 0, it is Case 0.

    If there is one, it is Case 1. You can edd it with qunantity 1 to the articles.

    If there are more, you can loop with something like

    for(int i = 0; i < result.length / 2; i++) {
        articles.addArticle(Integer.parseInt(result[i]), Double.parseDouble(result[i+1]));
    }
    
    0 讨论(0)
提交回复
热议问题