java - 使用 lambda 根据索引或最后一个数组值修改对 Java Stream 进行过滤

标签 java string lambda filtering java-stream

我有一个字符串数组,如下面的代码中提到的。我正在消除每个元素中存在的双引号,但我必须对最后一个索引执行额外的操作,因为我知道还有额外的双引号。

    String array[] = new String[]{"\"Awesome Systems, Inc. - 357", "\"Awesome Systems, Inc - 357", "\"wpe_stage\""};
    Arrays.stream(array).map((str) -> (str = str.trim())
            .substring(1, str.length()))
            .forEach(System.out::println);

我得到的是这样的输出-

   Awesome Systems, Inc. - 357
   Awesome Systems, Inc - 357
   wpe_stage"

所需的输出类似于 -

   Awesome Systems, Inc. - 357
   Awesome Systems, Inc - 357
   wpe_stage

如何使用流功能或 lambda 来做到这一点?有没有办法选择流中的最后一个索引或可以进行基于索引的任何过滤?

最佳答案

您可以使用 replaceAll 一次性替换双引号的所有实例,前提是它们位于元素的开头或结尾:

Arrays
    .stream(array)
    .map((str) -> (str = str.trim()).replaceAll("^\"|\"$", ""))
    .forEach(System.out::println);

输出

Awesome Systems, Inc. - 357
Awesome Systems, Inc - 357
wpe_stage

关于java - 使用 lambda 根据索引或最后一个数组值修改对 Java Stream 进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40612575/

相关文章:

java - 最终不可修改的集合线程安全吗?

java - SpringJUnit4ClassRunner 单元测试不起作用。错误: Failed to load ApplicationContext

c++ - 简单的 lambda 表达式 C++03 不带 boost 等

C# 克隆包括 Lambda 表达式

c# - 尝试为 linq 中的日期创建大于、等于或大于动态过滤器

java - 使用类属性的多个类似 DocumentListeners - 如何将它们压缩为一个监听器?

java - where 子句中参数的动态数量

c++:使用X Macro在类中定义枚举和字符串数组?

python - 将函数名称列表连接到一系列嵌套函数调用中

string - 从 Excel VBA 中的字符串中删除 HTML 标签