如何在Java的Stream.of()中使用if-else



我有一段代码,我用它来组合两个字符串。

String result = Stream.of(student.getFirstName(), student.getLastName())
.filter(Objects::nonNull)
.collect(Collectors.joining(". "));

很少有名字包含";在字符串的末尾。所以我想添加一个if条件来检查字符串是否包含"。"在最后然后跳过Collectors.join(".")
Edit-student.getLastName()将返回一个包含"."的字符串。最后。我也想保持原样。

在Java流中没有if/else。如果名称包含一个点作为首字母,则使用Stream.map删除点,然后使用Collectors.join(".")

加入。
String result = Stream.of(student.getFirstName(), student.getLastName())
.filter(Objects::nonNull)
.map(name -> name.endsWith(".") ? name.substring(0, name.length() - 1) : name)
.collect(Collectors.joining(". "));

您可以使用String.replace():

String firstName = student.getFirstName().replace('.', '');

虽然我不确定为什么你需要在你的场景中使用Stream,你可以简单地做:

String result = student.getFirstName().replace('.', '') + "." + student.getLastName();

或者类似的

最新更新