Kotlin将String值转换为正确的表示形式

时间:2018-05-30 18:29:41

标签: kotlin

我有一个接受value: String?的方法。该方法的目的是将String值转换为正确的表示形式。例如:

"true" -> a Boolean that has a true value

"20" -> an Int that contains 20

"1223.2" -> a Dobule

在Koltin中实现这一结果的最有效/最简洁的方法是什么?

更新

这是我目前的代码:

private fun insertRealType(map: WritableMap, key: String, value: String?) {

    val test = getValueType(value)

    when (test) {
        is String -> map.putString(key, test)
        is Boolean -> map.putBoolean(key, test)
        is Int -> map.putInt(key, test)
        is Double -> map.putDouble(key, test)
        else -> map.putNull(key)
    }
}

private fun getValueType(value: String?): Any {

    var returnValue: Any?

    returnValue = value?.toDoubleOrNull()

    if (returnValue != null)
        return returnValue

    returnValue = value?.toIntOrNull()

    if (returnValue != null)
        return returnValue

    // ETC......
}

1 个答案:

答案 0 :(得分:1)

这完全取决于你对"正确"的解释。表示。例如,"0"的值可以是Int或假Boolean

您在此处面临的另一个问题是,您必须以任何方式动态转换变量。如果您选择从该字符串中创建JSONObject并从中生成List<Object>,或者即使您编写了自己的方法将字符串值转换为Object s,您也可以ll仍然需要将所述对象强制转换为适当的形式(可能使用is运算符检查其类型)。为了让你有一个这个摘要的方法,你必须手动处理它的通用结果。

我可以帮助你提供比这样的概念更实际的答案,但你需要提供一些代码