基于索引过滤Java Stream或使用lambda修改最后一个数组值

ful*_*per 0 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);
Run Code Online (Sandbox Code Playgroud)

我得到的是像以下那样的输出

   Awesome Systems, Inc. - 357
   Awesome Systems, Inc - 357
   wpe_stage"
Run Code Online (Sandbox Code Playgroud)

所需的输出如下 -

   Awesome Systems, Inc. - 357
   Awesome Systems, Inc - 357
   wpe_stage
Run Code Online (Sandbox Code Playgroud)

如何使用流功能或lambda来完成此操作?有没有办法在流中选择最后一个索引,还是可以根据索引进行任何过滤?

Men*_*ena 6

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

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

产量

Awesome Systems, Inc. - 357
Awesome Systems, Inc - 357
wpe_stage
Run Code Online (Sandbox Code Playgroud)