Как вы уже сказали, вы забыли условие, чтобы проверить, содержит ли ваша строка =
.
Некоторые дополнительные замечания: вы можете заменить elementAt
также на get
или на оператор индексации (например, splitFormule[0]
).
Вас также может заинтересовать деструктурирование , например, ваш сплит также может быть записан следующим образом:
val (key, value) = it.split(" = ") // no need to extract the values from the array, if you know how the splitted data looks like
// you may even want to use the following if there could potentially be more than 1 '=' in the value part
val (key, value) = it.split(" = ", limit = 2) // at most 2 parts
Наконец, другой вариант, который пропускает ключи, если естьс ними не связаны никакие значения:
val yourMap = formules.splitToSequence("<br />")
.filter { it.contains("=") }
.map { it.split("""\s*=\s*""".toRegex(), limit = 2) }
.map { (key, value) -> key to value } // destructuring
.toMap()
// or: instead of filtering do a takeif and if you require those keys, do something appropriate there (e.g. set a default value instead)
val yourMap = formules.splitToSequence("<br />")
.map { it.split("""\s*=\s*""".toRegex(), limit = 2) }
.mapNotNull { it.takeIf { it.size == 2 } } // this discards now the entries without any value
.map { (key, value) -> key to value } // destructuring
.toMap()