[英]Convert String to Integer List in Kotlin
我想為類型轉換器室制作 function。 原始數據在列表中,我將其作為字符串存儲在數據庫中。
我的代碼和 output 是這樣的:
fun main() {
val genreIds = listOf(28, 80)
val stringFromList = fromList(genreIds)
val stringToList = toList(stringFromList)
println(genreIds) // output: [28, 80]
println(stringFromList) // output: [28, 80]
println(stringToList) // output: [91, 50, 56, 44, 32, 56, 48, 93]
}
fun fromList(genreIds: List<Int>): String = genreIds.toString()
fun toList(genreIdString: String): List<Int> {
return genreIdString.map { it.toInt() }
}
我確實嘗試使用split(",")
但由於"["
和"]"
它總是給我錯誤。 我想要 toList function 的 output 也是[28, 80]
。 感謝幫助。
您可以使用substring
刪除第一個和最后一個字符:
fun toList(genreIdString: String): List<Int> =
genreIdString
.substring(1, genreIdString.length - 1)
.split(", ")
.map { it.toInt() }
手動解析輸入似乎不是一個好主意。 為此,我建議使用 Kotlin 序列化庫。
使用它,您可以編寫如下簡單的代碼:
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
fun main() {
val list = listOf(1, 2, 3)
val str = Json.encodeToString(list)
println(str) // "[1,2,3]"
val list2: List<Int> = Json.decodeFromString(str)
println(list2) // [1, 2, 3]
}
使用removeSurrounding
方法刪除分隔符:
fun toList(genreIdString: String): List<Int> =
genreIdString
.removeSurrounding("[", "]")
.split(", ")
.map { it.toInt() }
我認為這種方法比使用substring
更好,因為它更清楚地傳達了您的意圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.