首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加java字符串项的数量。

添加java字符串项的数量。
EN

Stack Overflow用户
提问于 2020-04-21 13:13:34
回答 1查看 364关注 0票数 0

我有一份名单。我想把原料的数量加起来。比方说,我们有List<String> list = Arrays.asList("1 kg chicken", "1 kg olive oil", "250g chicken", "250 g chicken");

代码

代码语言:javascript
复制
        List<String> list = Arrays.asList("1 kg chicken", "1 kg olive oil", "250g chicken", "250 g chicken");

        for (int i = 0; i < list.size(); i++) {

            for (int j = 1; j < list.size(); j++) {
                if (meatList.get(i).equalsIgnoreCase((list.get(j))))
               //here to code

                    int quanity1 = Integer.valueOf(list.get(i).split(" ").toString());
                    int quanity2 = Integer.valueOf(list.get(j).split(" ").toString());

                    int qty = quanity1 + quanity2;

            }
        }

所需产量:1公斤橄榄油,1.5公斤鸡肉

同时,要考虑两种原料上的“鸡肉”,然后把它们的数量加起来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-22 08:49:40

我认为覆盖所有输入文本的可能性会很复杂,但这里有一个解决方案,首先使用reg ex匹配。

正则表达式将尝试匹配第一个数字(数量),后面是0或更多空格,然后是一些字母(权重等)空间,然后假设字符串的其余部分是成分。

代码语言:javascript
复制
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,计量: g,配料:鸡肉

数量: 250,计量: g,配料:鸡肉

更新

如果您想处理像1/2或0.5这样的度量,那么reg ex需要修改为

代码语言:javascript
复制
String regex = "^([\\d/.]+)\\s*(\\w*)\\s*(.*)$";

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61344439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档