Kotlinは文字列を整数に変換する効率的な方法をいくつか提供しています。最適なアプローチは、エラー処理の好みによって異なります。この記事では、`toInt()`、`toIntOrNull()`、`parseInt()`という3つの一般的な方法について、それぞれの強みと弱点を強調しながら説明します。
目次
toInt()
を使用した文字列から整数への変換
toInt()
メソッドは直接的なアプローチを提供します。ただし、入力文字列が有効な整数でない場合、NumberFormatException
をスローします。これは、堅牢なエラー処理のためにtry-catch
ブロックが必要となります。
fun stringToInt(str: String): Int {
return try {
str.toInt()
} catch (e: NumberFormatException) {
println("無効な入力: $str")
0 // またはカスタム例外をスローするか、別のデフォルト値を返す
}
}
fun main() {
val numStr1 = "123"
val numStr2 = "abc"
println("'$numStr1'の変換: ${stringToInt(numStr1)}") // 出力: 123
println("'$numStr2'の変換: ${stringToInt(numStr2)}") // 出力: 無効な入力: abc, 0
}
この例では、例外の処理方法を示しています。エラー処理(`println`と戻り値の`0`)は、アプリケーションのニーズに合わせて調整してください。
toIntOrNull()
を使用した安全な変換
toIntOrNull()
はより安全な代替手段を提供します。成功した場合は整数を返し、変換に失敗した場合は`null`を返します。これにより、try-catch
が不要になり、よりクリーンなコードになり、例外処理のオーバーヘッドを回避できます。
fun stringToIntOrNull(str: String): Int? {
return str.toIntOrNull()
}
fun main() {
val numStr1 = "123"
val numStr2 = "abc"
println("'$numStr1'の変換: ${stringToIntOrNull(numStr1)}") // 出力: 123
println("'$numStr2'の変換: ${stringToIntOrNull(numStr2)}") // 出力: null
}
val num = stringToIntOrNull("456")
val result = num ?: 0 // 変換に失敗した場合は0をデフォルト値として使用する
println(result) // 出力: 456
val num2 = stringToIntOrNull("xyz")
val result2 = num2 ?: 0
println(result2) // 出力: 0
エルビス演算子(`?:`)は、潜在的な`null`値をエレガントに処理します。このアプローチは、簡潔さと安全性から一般的に推奨されています。
文字列から整数への変換におけるparseInt()
の使用
parseInt()
メソッド(java.lang.Integer.parseInt()
)は別の選択肢を提供しますが、Kotlinではそれほど慣用的ではありません。toInt()
と同様に、NumberFormatException
をスローし、try-catch
が必要です。一般的に、Kotlinの組み込みメソッドよりも推奨されません。
fun stringToIntParseInt(str: String): Int {
return try {
Integer.parseInt(str)
} catch (e: NumberFormatException) {
println("無効な入力: $str")
0 // または例外を異なる方法で処理する
}
}
fun main() {
val numStr1 = "123"
val numStr2 = "abc"
println("'$numStr1'の変換: ${stringToIntParseInt(numStr1)}") // 出力: 123
println("'$numStr2'の変換: ${stringToIntParseInt(numStr2)}") // 出力: 無効な入力: abc, 0
}
要約すると、簡潔さとnull安全性から、toIntOrNull()
が推奨されるアプローチです。入力文字列が常に有効な整数であることが確実であり、明示的な例外処理を好む場合にのみ、toInt()
を使用してください。Javaメソッドを使用する必要がある正当な理由がない限り、parseInt()
は避けてください。アプリケーションのクラッシュを防ぐために、常に潜在的なエラーを効果的に処理してください。