示例 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
,其中包含要检查的字符串。我们还有一个布尔值 numeric,它存储最终结果是否为数字。
要检查 string 是否只包含数字,在 try 块中,我们使用 Double
的 parseDouble()
方法将字符串转换为 Double
。
如果它引发错误(即 NumberFormatException
错误),则表示 string 不是数字,并将 numeric 设置为 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
在上面的程序中,我们不使用 try-catch 块,而是使用 regex 来检查 string 是否为数字。这是通过 String 的 matches()
方法完成的。
在 matches()
方法中,
-?
允许字符串中的负数有零个或多个-
。\\d+
检查字符串必须至少包含一个或多个数字(\\d
)。(\\.\\d+)?
允许零个或多个给定的模式(\\.\\d+)
,其中\\.
检查字符串是否包含.
(小数点)- 如果是,则后面必须跟着一个或多个数字
\\d+
。
这是等效的 Java 代码:Java 检查字符串是否为数字的程序。