首页 > 解决方案 > 在 kotlin 中循环

问题描述

我在使用 kotlin 循环时遇到了一些麻烦

我有如下的json:

{
idEvent: "584412",
strEvent: "Huesca vs Girona",
strHomeYellowCards: "28':Ezequiel Avila;34':Juan Nunez Aguilera;45':Damian Musto;88':David Ferreiro;"
}

在我在 android studio 中生成之后,我希望这条线strHomeYellowCards只有一个如下所示TextView

Ezequiel Avila 28'
Juan Nunez Aguilera 34'
Damian Musto 45' 
David Ferreiro 88'

这些我的代码使它发生

fun formatNumPlayer(players: String?): String {
        if (players.isNullOrBlank()) {
            return players.orEmpty()
        } else {
            val entered = players!!.replace(";", "\n")
            val splitted = entered!!.split(":")
            var result: String? = null
            for (i in splitted.indices) {
                result += "${splitted[1]}" + " " + "${splitted[0]}" + "\n"
            }
            return result!!
        }
    }

但是结果却出乎我的意料,那么真实的代码如何呢?

标签: androidapiloopskotlinline

解决方案


提供的 JSON 不是格式良好的 JSON。所以我假设你只是在key:value这里粘贴了这对。

在这种情况下,将值作为字符串并对其进行处理将是实现目标的最简单方法。

// Assume bulkText is the value of key `strHomeYellowCards`
val bulkText = "28':Ezequiel Avila;34':Juan Nunez Aguilera;45':Damian Musto;88':David Ferreiro;"

var result = ""

bulkText.split(';').forEach{
    result += it.split(':').asReversed().reduce{ sum, element -> sum + ' ' + element } + '\n'
}

// result should be your desired output
println(result)

推荐阅读