ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Kotlin 程序:检查字符串是否为数字 > 原文: [https://www.programiz.com/kotlin-programming/examples/check-string-numeric](https://www.programiz.com/kotlin-programming/examples/check-string-numeric) #### 在此程序中,您将学习不同的技术来检查 Kotlin 中的字符串是否为数字。 ## 示例 1:检查字符串是否为数字 ```kt 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") } ``` 运行该程序时,输出为: ```kt 12345s15 is not a number ``` 在上面的程序中,我们有一个名为`string`的`String`,其中包含要检查的字符串。 我们还有一个布尔值`num`,它存储最终结果是否为数字。 要检查`string`是否仅包含数字,在`try`块中,我们使用`Double`的`parseDouble()`方法将字符串转换为`Double`。 如果抛出错误(即`NumberFormatException`错误),则表示`string`不是数字,并且`num`设置为`false`。 否则,这是一个数字。 但是,如果要检查是否有一定数量的字符串,则需要将其更改为函数。 而且,逻辑基于抛出异常,这可能会非常昂贵。 相反,我们可以使用正则表达式的功能来检查字符串是否为数字,如下所示。 * * * ## 示例 2:使用正则表达式(regex)检查字符串是否为数字 ```kt 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") } ``` 运行该程序时,输出为: ```kt -1234.15 is a number ``` 在上面的程序中,我们使用正则表达式来检查`string`是否为数字,而不是使用`try-catch`块。 这是使用`String`的`matches()`方法完成的。 在`matches()`方法中, * `-?`允许零或多个`-`用于字符串中的负数。 * `\\d+`检查字符串必须至少包含一个或多个数字(`\\d`)。 * `(\\.\\d+)?`允许零个或多个给定模式`(\\.\\d+)`,其中 * `\\.`检查字符串是否包含`.`(小数点) * 如果是,则应至少跟一个或多个数字`\\d+`。 以下是等效的 Java 代码:[检查字符串是否为数字的 Java 程序](/java-programming/examples/check-string-numeric "Java program to check if a string is numeric or not")。