如何控制偷看以不同方式处理最后一个元素?

Rob*_* Li 4 java string java-8 java-stream

我有一串像

"abcd".chars()
Run Code Online (Sandbox Code Playgroud)

我正在使用peek打印出这样的流

"abcd".chars().peek(e->System.out.print(e + ":"))
Run Code Online (Sandbox Code Playgroud)

唯一的问题是它打印出来

a:b:c:d:
Run Code Online (Sandbox Code Playgroud)

我想用换行符替换最后一个冒号,但不知道怎么做,有人可以帮忙吗?

Ous*_* D. 5

使用joining收集器是另一种选择:

String result = Arrays.stream(string.split(""))
                      .collect(Collectors.joining(":"));
Run Code Online (Sandbox Code Playgroud)

要么:

String result = Pattern.compile("")
                       .splitAsStream(string)
                       .collect(Collectors.joining(":"));
Run Code Online (Sandbox Code Playgroud)

如果你真的想要一个新的行,那么使用joining收集器的这个重载

Collectors.joining(":","","\n")
Run Code Online (Sandbox Code Playgroud)