#kotlin
Вопрос:
Следующий метод создает исключение, так как разделитель может быть пустым
private fun parseIt(data: String) =
data
.split("n")
.let { dataRows ->
dataRows.map { dataRow ->
dataRow.let { dataRow.split("=")}.let { splitRow ->
splitRow[0] to splitRow[1].replace(";", "")
}
}
}.toMap()
Как я могу проверить, не является ли splitRow пустым, прежде чем извлекать его элементы?
Ответ №1:
mapNotNull
чтобы пропустить некоторые элементы. takeIf
чтобы использовать значение null для недопустимых строк.
data.split("n")
.mapNotNull { dataRow ->
dataRow.split("=")
.takeIf { it.size >= 2 }
?.let { splitRow ->
splitRow[0] to splitRow[1].replace(";", "")
}
}.toMap()