在KOTLIN中将字符串转换为Float或Int

时间:2020-01-28 13:34:03

标签: android kotlin

我需要将应用程序版本转换为IntFloat进行比较。 我正在使用以下语法,但是会抛出java.lang.NumberFormatException

val currentVersion = BuildConfig.VERSION_NAME.toFloat()

编辑:如果我需要将“ 2.2”转换为浮点数怎么办?

3 个答案:

答案 0 :(得分:2)

通常,版本名称的写法如下:“ 1.0.0”(当然,您可以解析字符串,然后获取3个数字:“ 1”,“ 0”和“ 0”),因此无法将其转换为数字格式。您还可以使用 VERSION_CODE 它将返回一个数字

答案 1 :(得分:2)

应用程序版本比较非常简单,例如比较版本1.02.0

但是如果要比较的版本是1.0.2-rc21.0.2-rc32.0.0-beta2.0.0,有时会变得很复杂。在这种情况下,您不能只转换{{1 }}转换为versionNameInt类型。顺便说一句,最有可能导致未来无法证明的原因是,Float被认为是比1.19更旧的版本。

为了使此比较容易,您可以检查此库-Version Compare (github)。 (或者-Semver4j)我认为它将处理大多数情况。

此外,您可以在此post中阅读有关版本控制的更多信息。

答案 2 :(得分:0)

如果您得到NumberFormatException,则表示该字符串不是数字的有效表示形式。

您的BuildConfig.VERSION_CODE是有效的Int,可以使用吗?