どうも、ちょげ(@chogetarou)です。
文字列(string)が数値かどうかチェックする方法を紹介します。
方法
文字列(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())
コメント