Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin将字符串值转换为正确的表示形式_Kotlin - Fatal编程技术网

Kotlin将字符串值转换为正确的表示形式

Kotlin将字符串值转换为正确的表示形式,kotlin,Kotlin,我有一个接受值:String?的方法。该方法的目的是将字符串值转换为正确的表示形式。例如: “true”->具有真值的布尔值 “20”->包含20的整数 “1223.2”->多臂机 在Koltin实现这一结果的最有效/简洁的方法是什么 更新 这是我目前的代码: private fun insertRealType(map: WritableMap, key: String, value: String?) { val test = getValueType(value) wh

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

“true”->具有真值的布尔值

“20”->包含20的整数

“1223.2”->多臂机

在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......
}

这完全取决于您对“正确”表示的解释。例如,
“0”
的值可以是
Int
或false
布尔值

这里您将面临的另一个问题是,您必须以任何一种方式动态地强制转换变量。如果您选择从该字符串创建一个
JSONObject
,并从中生成一个
列表
,或者即使您编写了自己的方法将字符串值转换为
对象
,您仍然需要将所述对象转换为其适当的形式(可能需要使用
is
操作符检查其类型)。为了让您有一个这样抽象的方法,您必须手动处理强制转换它的泛型结果


我可以为您提供一个比这样的概念性答案更实用的答案,但您需要提供一些代码

到目前为止,您的代码是什么样子的?这不是一个代码编写服务。@zsmb13这里是一个示例代码片段,我一直在努力更正。但是,我知道“1”和“0”对我来说不是布尔值。此外,我还发布了一个代码片段,我作为一个样本进行了研究。我知道,按照惯例,大多数人可以同意字符串文本的类型。我只是在说明一些陷阱。我检查了你的代码片段,我不得不问,它怎么了?到目前为止,您的代码的逻辑是正确的!只要不断检查您在
getValueType()
中支持的其他类型,我对Kotlin比较陌生,所以我想可能有一些扩展/快捷方式我还不熟悉。@TareKKhoury-可能在Kotlin stdlib的某个地方隐藏了一些东西,但这个要求非常具体。如果这对应于(比如)JSON转换,那么您最好使用专用JSON库(例如Jackson)。我同意@OliverCharlesworth的观点,即如果转换对应于您所寻求的内容,则使用专用JSON库。我还可以肯定地告诉您,来自Java背景的这种类型推断必须手动完成。我几乎完全肯定科特林也是如此。看看,这几乎就是你所做的!