当前位置: 首页 > 知识库问答 >
问题:

如何从字符串中获取特定值并添加到其他[封闭]

单于奇略
2023-03-14
String first  = "01 apple & 3 orange & 22 choco";  
String second = "11 apple & 02 orange & 03 choco";

22+03=25

共有1个答案

董子航
2023-03-14

这里可以使用Stream API来构建水果/数量地图并计算总值:

  1. 创建第一个第二个字符串的流
  2. 用“\s*&\s”拆分每一行(一个用可选空格包围的与符号),并使用flatmap获取成对的流“number fruit”
  3. 按“\s+”
  4. 将每对字符串拆分为 string[]
  5. 使用collectors.groupingby+collectors.summingInt构建映射映射 ,计算每个水果的总数
  6. 获取“choco”
  7. 的总值
Integer chocoTotal = Stream.of(first, second) // Stream<String> initial strings
    .flatMap(str -> Arrays.stream(str.split("\\s*&\\s*"))) // split each line and get Stream<String>
    .map(pair -> pair.split("\\s+")) // split pairs, Stream<String[]>
    .collect(Collectors.groupingBy(
        p -> p[1], 
        Collectors.summingInt(p -> Integer.parseInt(p[0]))
    ))
    .get("choco"); // get the total

System.out.println("Total: " + chocoTotal);

输出

Total: 25
Pattern pairPattern = Pattern.compile("(\\d+)\\s+(\\w+)");
Integer sum2 = Stream.of(first, second)
    .flatMap(str -> pairPattern.matcher(str).results()) // Stream<MatchResult>
    .collect(Collectors.groupingBy(
        mr -> mr.group(2), 
        Collectors.summingInt(mr -> Integer.parseInt(mr.group(1)))
    ))
    .get("choco");
    System.out.println("Total = " + sum2);
Total: 25
 类似资料:
  • 问题内容: 我的下面的代码当机(调试错误!R6010 abort()已被调用)。你能帮助我吗?我也想知道如何从字符串值初始化json对象。 问题答案: 您好,这很简单: 1-您需要一个CPP JSON值对象(Json :: Value)来存储数据 2-使用Json Reader(Json :: Reader)读取JSON字符串并解析为JSON对象 3-做你的东西:) 这是执行这些步骤的简单代码:

  • 我在写一个简单的信息管理程序的代码。我在Java swing GUI中遇到了麻烦。在这段代码中,我计划在Northpanel_center中使用JTextField字符串,以便在NorthPanel_East中使用。但我不能用它。 要补充的是,类似这样的搜索方法。

  • 位置值是从我们的服务器获取的,以字符串格式,现在我定义了新的位置,之后我想获取经度和纬度,但它是0.0。代码是这样的。

  • 以下是我所做的: 我得到一个空数组。如果我从字符串中删除“、”和“”,它将给我一个带有['cocoa'、'tiger']的数组,这是我想要的实际输出。 我想得到输出 从绳子上 请帮我想出一个解决办法。提前谢谢。

  • 我想从文件中读取文件夹tar.gz名称,并创建包含名称的列。 我使用这个代码: 在主文件夹中,只有少数几个文件夹具有名称。从文件夹“X”(例如)读取csv文件后,应在此csv文件中创建“FolderName”列,并且必须包含所有行的文件夹名称(“X”)。对于每个csv文件也是如此。 路径字符串的示例:或

  • 问题内容: 我有一个像 从上面的字符串中,我需要获取一个值。 当我使用替换所有功能。 当字符串有两个点时,这将不起作用。 浮点值的位置可能有所不同。 问题答案: 首先丢弃所有非float字符,然后像这样隐秘给Float: