1. 概要

このクイックチュートリアルでは、KotlinでStringIntに変換するいくつかの方法を理解します。

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から入手できます。