kotlin判断字符串是否全数字

前言

kotlin中如何判断一个字符串里没给字符是不是都是数字

方法
  • 使用all()方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //Kotlin 不提供任何标准函数来检查给定字符串是否为数字。但是,这可以通过 all() 函数判断

    fun isNumber(s: String?): Boolean {
    return if (s.isNullOrEmpty()) false else s.all { Character.isDigit(it) }
    }

    fun main() {
    val s = "100"
    if (isNumber(s)) print("Number") else print("Not a Number") // Number
    }
  • 使用toInt()方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //这里的技巧是将给定的字符串转换为整数 toInt() 函数,它生成 NumberFormatException 对于非数字字符串。请注意,当值超出整数范围时,此函数将失败。
    fun isNumber(s: String): Boolean {
    return try {
    s.toInt()
    true
    } catch (ex: NumberFormatException) {
    false
    }
    }

    fun main() {
    val s = "100"
    if (isNumber(s)) print("Number") else print("Not a Number") // Number
    }
  • 使用toIntOrNull方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //可以使用 toIntOrNull() 函数,它将字符串解析为 Int 数字,如果字符串不是数字的有效表示形式,则返回结果或 null。
    fun isNumber(s: String): Boolean {
    return when(s.toIntOrNull())
    {
    null -> false
    else -> true
    }
    }

    fun main() {
    val s = "100"
    if (isNumber(s)) print("Number") else print("Not a Number") // Number
    }
  • 使用matches方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //使用正则表达式来检查字符串是否为数字 matches() 函数,它告诉这个字符串是否匹配给定的正则表达式。
    fun isNumber(s: String?): Boolean {
    return !s.isNullOrEmpty() && s.matches(Regex("\\d+"))
    }

    fun main() {
    val s = "100"
    if (isNumber(s)) print("Number") else print("Not a Number") // Number
    }