Kotlinで文字列をIntに変換する
1. 概要
このクイックチュートリアルでは、KotlinでStringをIntに変換するいくつかの方法を理解します。
2. StringからIntへの変換
最も単純なシナリオでは、 toInt()拡張関数を使用して、文字列を対応するInt値に変換できます。 String に有効な数値コンテンツが含まれている場合、すべてがスムーズに機能するはずです。
val intValue = "42".toInt()
assertEquals(42, intValue)
一方、文字列に有効な数値データが含まれていない場合、同じ関数はNumberFormatExceptionをスローします。
assertThrows<NumberFormatException> { "0x2a".toInt() }
assertThrows<NumberFormatException> { "2.5".toInt() }
assertThrows<NumberFormatException> { "2.5 inch".toInt() }
assertThrows<NumberFormatException> { "invalid".toInt() }
上に示したように、これらの String は有効な整数ではないため、例外です。
例外が気に入らない場合は、 toIntOrNull()拡張関数を使用できます。この関数は、無効な整数に対してnullを返します:
assertNull("invalid".toIntOrNull())
assertEquals(42, "42".toIntOrNull())
したがって、 String に有効な整数値が含まれている場合、 toIntOrNull()は toInt()と同様に動作します。 一方、無効な整数値の場合は、単に例外を取得し、代わりにnullを返します。
2.1. 基数変換
文字列に10以外の基数(または基数)の整数値が含まれる場合があります。 このような値を変換するために、基数を2番目の引数として渡すことができます。
val intValue = "2a".toInt(16)
assertEquals(42, intValue)
ここで、“ 2a” は有効な16進値であるため、基数として16を渡します。 同様に、基数を toIntOrNull()関数に渡すこともできます。
assertEquals(42, "2a".toIntOrNull(16))
2.2. 符号なしの値
文字列を符号なし整数に変換することも可能です–KotlinはKotlin1.3の時点でそれらをサポートしています。
assertEquals(42u, "42".toUInt())
assertEquals(42u, "2a".toUInt(16))
assertNull("2a".toUIntOrNull())
assertEquals(42u, "2a".toUIntOrNull(16))
上に示したように、 toUInt()と toUIntOrNull()は、それらの符号付きの同等物と非常によく似ています。 Kotlin 1.5以降、符号なし整数は安定した機能です。 ただし、以前のバージョンのKotlinを使用している場合、この実験的な機能を使用するには、@ExperimentalUnsignedTypesアノテーションを使用してオプトインする必要があります。
3. 結論
このチュートリアルでは、Kotlin Stringを対応するInt値に変換する方法を説明しました。
いつものように、すべての例はGitHubでから入手できます。