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]]
→ Ссылка