Проверьте наличие нулевой строки перед добавлением на карту

#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()