kotlin ввод данных, массивы
В общем через readLine() дается строка "books: [(название, количество, цена), (название, количество, цена), ...]"
Надо каким то образом сделать массив с которым можно будет работать в дальнейшем, типо такого - [["Алгебра, 10 класс", 5, 100,] ["Теория чисел, 2 класс", 42, 500]]
Но у меня не чего не получилось сделать, срезами это нереально делать... хотел еще через функцию eval() но она не доступна в обычном kotlin
boks это эта строка - [(название, количество, цена), (название, количество, цена), ...]
fun infBooks(boks:String) {
val idx = boks.indexOf(",")+9
var all = boks.substring(idx,boks.length)
all = all.replace("[","")
all = all.replace("]","")
all = all.replace("(","[")
all = all.replace(")","]")
val report ="val booksFinal = listOf($all) "
}
Хотел потом eval() но его нету в обычном kotlin
Ответы (1 шт):
Автор решения: Vind Iskald
→ Ссылка
fun main() {
val boks = "[(Алгебра, 10 класс, 5, 100), (Теория чисел, 2 класс, 42, 500)]"
val list = boks.drop(2).dropLast(2).split("), (").map { book ->
book.reversed().split(" ,", limit = 3).reversed().map { reversedParam ->
val bookParam = reversedParam.reversed()
if (bookParam[0].isDigit()) bookParam else "\"$bookParam\""
}
}
println(list)
}
[["Алгебра, 10 класс", 5, 100], ["Теория чисел, 2 класс", 42, 500]]