排队进入科特林

时间:2018-10-04 07:38:47

标签: android api loops kotlin line

我在使用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!!
        }
    }

但是结果出乎我的意料,所以关于它的真实代码如何?

3 个答案:

答案 0 :(得分:1)

提供的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)

答案 1 :(得分:0)

首先,您在问题中提供的JSON格式不正确。应该更像这样:

strHomeYellowCards: [
  {
    "minute": "28'",
    "player": "Ezequiel Avila"
  },
  {
    "minute": "34'",
    "player": "Juan Nunez Aguilera"
  }, ..and so on
]

然后您可以继续解析它。要解析JSON对象,您应该使用GSON之类的库。

为YellowCard创建POJO对象:

data class YellowCard(
    @SerializedName("minute") val minute: String, 
    @SerializedName("player") val player: String)

然后进行解析:

val gson = Gson()
val yellowCards: List<YellowCard> = gson.fromJson(json, new TypeToken<List<YellowCard>>(){}.getType())

答案 2 :(得分:0)

他不能使用Gson,因为分钟:玩家对之间用;隔开。 在有效的json中,必须为

如果您真的想手动解析,请尝试以下操作:

fun formatNumPlayer(players: String?): String {
    var result = ""
    players?.let {
        it.split(";").forEach { pair ->
            val tmp = pair.split(":")
            result += tmp[1] + " " + tmp[0] + "\n"
        }
        return result
    }

    return result
}