[Kotlin]文字列が数値かどうか判定するには?

Kotlin

どうも、ちょげ(@chogetarou)です。

文字列(string)が数値かどうかチェックする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

文字列(string)が数値かどうか判定する方法は、3つあります。

toIntOrNull()

1つ目は、toIntOrNull()を使う方法です。

まず、文字列からtoIntOrNull()を呼び出します。

そして、toIntOrNull()の結果がNullかどうかを調べます。

//text=対象の文字列
text.toIntOrNull() != null //文字列が整数の場合にtrue

toIntOrNull()の結果がnullの場合は整数ではありません。

逆に、toIntOrNull()の結果がnullでない場合は、呼び出した文字列は整数です。

使用例

fun isNumber(str: String): Boolean {
    return str.toIntOrNull() != null
}

fun main() {
    val text: String = "123"
    val text2: String = "-897"
    val text3: String = "a12.84u"
    val text4: String = "3.14"
    
    println(isNumber(text))
    println(isNumber(text2))
    println(isNumber(text3))
    println(isNumber(text4))
}
出力:
true
true
false
false

toDoubleOrNull()

2つ目は、toDoubleOrNull()を使う方法です。

まず、文字列からtoDoubleOrNull()を呼び出します。

そして、toDoubleOrNull()の結果がNullかどうかを調べます。

//text=対象の文字列
text.toDoubleOrNull() != null //文字列が数値の場合にtrue

toDoubleOrNull()の結果がnullの場合は数値ではありません。

逆に、toIntOrNull()の結果がnullでない場合は、呼び出した文字列は数値です。

使用例

fun isNumber(str: String): Boolean {
    return str.toDoubleOrNull() != null
}

fun main() {
    val text: String = "123"
    val text2: String = "-897"
    val text3: String = "a12.84u"
    val text4: String = "3.14"
    
    println(isNumber(text))
    println(isNumber(text2))
    println(isNumber(text3))
    println(isNumber(text4))
}
出力:
true
true
false
true

正規表現

3つ目は、正規表現を使う方法です。

まず、文字列からmatches()を呼び出します。

そして、matches()の引数に「"-?[0-9]+(\\.[0-9]+)?".toRegex()」を指定します。

//text=対象の文字列
text.matches("-?[0-9]+(\\.[0-9]+)?".toRegex())

上記のmatches()は、呼び出した文字列が数値ならば「true」、数値でないならば「false」を返します。

使用例

fun isNumber(str: String): Boolean {
    return str.matches("-?[0-9]+(\\.[0-9]+)?".toRegex())
}

fun main() {
    val text: String = "123"
    val text2: String = "-897"
    val text3: String = "a12.84u"
    val text4: String = "3.14"
    
    println(isNumber(text))
    println(isNumber(text2))
    println(isNumber(text3))
    println(isNumber(text4))
}
出力:
true
true
false
true

まとめ

文字列(string)が数値かどうか判定する方法は、次の3つです。

  • toInOrNull()を使う方法
    text.toIntOrNull() != null //文字列が整数の場合にtrue
  • toDoubleOrNull()を使う方法
    text.toDoubleOrNull() != null //文字列が数値の場合にtrue
  • 正規表現を使う方法
    text.matches("-?[0-9]+(\\.[0-9]+)?".toRegex())

コメント

タイトルとURLをコピーしました