存在这样的任务:一个name
、一个surname
、一个patronymic
等字段到达一个输入。
在最简单的情况下,所有这些字段都填充了数据,因此它们的输出如下所示:
"name" + "surname" + "patronymic"
但是,有些时候,例如,缺少姓氏字段,因此输出应该是这样的:
"name" + "patronymic"
另一种情况,当没有父名时,在这种情况下,它应该像这样显示:
"name" + "surname"
同样的事情与name
,它可能丢失,它应该是什么样子,我想你已经猜到了。
我明白你很可能需要以某种方式使用if-else
来实现所有情况下所需的结果,但在我看来,将是太多的代码。是否有可能以某种方式解决这个问题并处理所有选项?
val name = "name"
val surname = "surname"
val patronymic = "patronymic"
val result = listOf(name, surname, patronymic)
.filter { it.isNotBlank() }
.joinToString(" ")
println(result)
或使用辅助函数:
fun List<String>.concatWithBlank() = this.filter { it.isNotBlank() }.joinToString(" ")
val result = listOf(name, surname, patronymic).concatWithBlank()