我有一份名单。我想把原料的数量加起来。比方说,我们有List<String> list = Arrays.asList("1 kg chicken", "1 kg olive oil", "250g chicken", "250 g chicken");
代码
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公斤鸡肉
同时,要考虑两种原料上的“鸡肉”,然后把它们的数量加起来。
发布于 2020-04-22 08:49:40
我认为覆盖所有输入文本的可能性会很复杂,但这里有一个解决方案,首先使用reg ex匹配。
正则表达式将尝试匹配第一个数字(数量),后面是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,计量: g,配料:鸡肉
数量: 250,计量: g,配料:鸡肉
更新
如果您想处理像1/2或0.5这样的度量,那么reg ex需要修改为
String regex = "^([\\d/.]+)\\s*(\\w*)\\s*(.*)$";但请注意,您不能再将第一个匹配的值转换为整数,可以将0.5转换为双值,但需要手动处理1/2。
https://stackoverflow.com/questions/61344439
复制相似问题