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 是数字")
else
println("$string 不是数字")
}
当您运行该程序时,输出将为:
12345s15 不是数字
在上面的程序中,我们有一个名为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 是数字")
else
println("$string 不是数字")
}
当您运行该程序时,输出将为:
-1234.15 是数字
在上面的程序中,我们没有使用try-catch块,而是使用正则表达式检查string
是否为数字。这是通过String的matches()
方法实现的。
在matches()
方法中,
-?
允许字符串中有零个或多个-
以表示负数。\\d+
检查字符串必须至少有1个或更多数字(\\d
)。(\\.\\d+)?
允许字符串中有零个或多个给定模式(\\.\\d+)
,其中\\.
检查字符串是否包含.
(小数点)。- 如果是,它应该后跟至少一个或更多数字
\\d+
。
以下是等效的Java代码:Java程序检查字符串是否为数字。