Android / Kotlin上的字符串为Double

时间:2017-11-15 14:03:55

标签: android kotlin

我必须使用Kotlin在Android上将字符串转换为double。

以下应该适用于Kotlin,但不适用(没有这样的方法):

var dbl = "1.0".toDouble()

以下Javaish方式也不起作用:

var dbl = Double.parseDouble("1.0")

显然, Android 上的String类既没有Kotlin API,Double也没有通常的Java API?

是否优雅方式在 Kotlin 在Android 上运行?

现在,我正在使用此功能(此功能,但很难看):

var dbl = java.lang.Double.parseDouble("1.0")

该项目是使用Android Studio新创建的,使用以下版本:

ext.kotlin_version = '1.1.51'
    minSdkVersion 23
    targetSdkVersion 26

我认为这是Android API和Kotlin API之间的一些不匹配。

2 个答案:

答案 0 :(得分:7)

方法就在那里,它不应该给你no方法异常。

尝试干净的Android版本。有a bug on Kotlin's issue tracker Gradle构建任务没有完全定义偶尔需要干净构建的所有内容。这已经针对最新版本的Kotlin进行了修复。

我要遵循以下几个步骤来尝试解决此问题:

  1. 清理构建
  2. 升级到最新的Kotlin版本。在撰写本文时,它是1.1.60
  3. 确保您使用的是最新版本的Gradle和Android Studio。我的团队目前正在使用Gradle 4.3.1和Android插件3.0.0
  4. 如果这些不起作用,我会将所有IDE数据从项目中删除。 (包括隐藏的.gradle.idea文件夹),然后将您的项目重新导入Android Studio,然后重试。
  5. 方法肯定存在,我可以使用它。

    作为一种简单地让你再次移动并取消阻止你的方法,如果上述方法不起作用,你可以自己总是将以下功能添加到你的应用中,它也应该有效:

    public inline fun String.toDouble(): Double = java.lang.Double.parseDouble(this)
    

答案 1 :(得分:2)

你也可以使用.toDouble(),这会很有帮助, 得到你的文字并轻松地将其转换为双倍值

N\d.*?(N\d)