簡體   English   中英

將字符串轉換為 Kotlin 中的 Integer 列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM