原文: https://www.programiz.com/kotlin-programming/examples/check-string-numeric
在此程序中,您将学习不同的技术来检查 Kotlin 中的字符串是否为数字。
示例 1:检查字符串是否为数字
import java.lang.Double.parseDouble
fun main(args: Array<String>) {
val string = "12345s15"
var numeric = true
try {
val num = parseDouble(string)
} catch (e: NumberFormatException) {
numeric = false
}
if (numeric)
println("$string is a number")
else
println("$string is not a number")
}
运行该程序时,输出为:
12345s15 is not a number
在上面的程序中,我们有一个名为string
的String
,其中包含要检查的字符串。 我们还有一个布尔值num
,它存储最终结果是否为数字。
要检查string
是否仅包含数字,在try
块中,我们使用Double
的parseDouble()
方法将字符串转换为Double
。
如果抛出错误(即NumberFormatException
错误),则表示string
不是数字,并且num
设置为false
。 否则,这是一个数字。
但是,如果要检查是否有一定数量的字符串,则需要将其更改为函数。 而且,逻辑基于抛出异常,这可能会非常昂贵。
相反,我们可以使用正则表达式的功能来检查字符串是否为数字,如下所示。
示例 2:使用正则表达式(regex)检查字符串是否为数字
fun main(args: Array<String>) {
val string = "-1234.15"
var numeric = true
numeric = string.matches("-?\\d+(\\.\\d+)?".toRegex())
if (numeric)
println("$string is a number")
else
println("$string is not a number")
}
运行该程序时,输出为:
-1234.15 is a number
在上面的程序中,我们使用正则表达式来检查string
是否为数字,而不是使用try-catch
块。 这是使用String
的matches()
方法完成的。
在matches()
方法中,
-?
允许零或多个-
用于字符串中的负数。\\d+
检查字符串必须至少包含一个或多个数字(\\d
)。(\\.\\d+)?
允许零个或多个给定模式(\\.\\d+)
,其中\\.
检查字符串是否包含.
(小数点)- 如果是,则应至少跟一个或多个数字
\\d+
。
以下是等效的 Java 代码:检查字符串是否为数字的 Java 程序。