添加java字符串的项目数量

添加java字符串的项目数量,java,string,split,Java,String,Split,我有一张单子。我想把配料的数量加起来。 比如说,我们有List List=array.asList(“1kg鸡肉”、“1kg橄榄油”、“250g鸡肉”、“250g鸡肉”) 代码 List List=Arrays.asList(“1公斤鸡肉”、“1公斤橄榄油”、“250克鸡肉”、“250克鸡肉”); 对于(int i=0;i开始的解决方案。 正则表达式将尝试匹配第一个数字(数量),后面是0或更多的空格,然后是一些字母(权重等)空格,然后字符串的其余部分被假定为成分 String regex = "

我有一张单子。我想把配料的数量加起来。 比如说,我们有
List List=array.asList(“1kg鸡肉”、“1kg橄榄油”、“250g鸡肉”、“250g鸡肉”)

代码

List List=Arrays.asList(“1公斤鸡肉”、“1公斤橄榄油”、“250克鸡肉”、“250克鸡肉”);
对于(int i=0;i
所需产量:1公斤橄榄油,1.5公斤鸡肉


同时,应考虑两种成分上的“鸡”,然后对它们的量进行求和。

< P>我认为覆盖所有输入文本的可能性是复杂的,但这里有一个使用Reg EX匹配< /P>开始的解决方案。 正则表达式将尝试匹配第一个数字(数量),后面是0或更多的空格,然后是一些字母(权重等)空格,然后字符串的其余部分被假定为成分

String regex = "^(\\d+)\\s*(\\w*)\\s*(.*)$";
Pattern pattern = Pattern.compile(regex);

for (String string : list) {
    Matcher matcher = pattern.matcher(string);
    if (matcher.matches()) {
        Integer quantity = Integer.valueOf(matcher.group(1).trim());
        String measurement = matcher.group(2).trim();
        String ingredient = matcher.group(3).trim();

        System.out.printf("Quantity: %d, measurement: %s, ingredient: %s\n", quantity, measurement, ingredient);
    }
}
使用列表“1公斤鸡肉”、“1公斤橄榄油”、“250克鸡肉”、“250克鸡肉”这一输出

数量:1只,尺码:公斤,配料:鸡肉
数量:1,尺寸:千克,成分:橄榄油
数量:250,尺寸:克,配料:鸡肉
数量:250,尺寸:克,配料:鸡肉


更新

如果要处理1/2或0.5这样的测量值,则需要将reg ex修改为

String regex = "^([\\d/.]+)\\s*(\\w*)\\s*(.*)$";

但是请注意,您不能再将第一个匹配项的值转换为整数,0.5可以转换为双精度,但1/2需要手动处理。

meatList与list相同吗?@NomadMaker是的,相同。请检查更新问题Dig你想同时拥有250克和250克吗?@NomadMaker是的,我两者都有。用户自由文本这是一个有明确限制的家庭作业,还是一个真正的应用程序?从自由文本中提取数据非常复杂,如果列表中包含一个包含成分、数量等成员变量的类,则会容易得多。简单的示例是,如果我们还添加了成分鸡汤,则解析列表会困难得多。先生,谢谢您的回答。你的答案对我有用。请您在Regex中为用例“'1/2杯鸡汤”@Lily添加一点更新,我已经对我的答案进行了更新,但请注意,您不能继续添加您的问题。如果您想使用reg ex匹配,那么您还需要研究它,以便您自己理解并改进代码谢谢您,先生。我明白。
String regex = "^([\\d/.]+)\\s*(\\w*)\\s*(.*)$";