1. 概要

null可能性の制約やその他の要件に応じて、Kotlinには、Stringの空を判断するのに役立つ拡張機能がいくつかあります。

この短いチュートリアルでは、これらの関数に慣れて、KotlinでStringが空であるか空白であるかを確認します。

2. 空の文字列

文字列の長さがゼロの場合は空です。null許容でない文字列が空かどうかを判断するには、 isEmpty()を使用できます。拡張機能:

val empty = ""
assertTrue { empty.isEmpty() }

一方、文字列が空でないかどうかを確認するには、否定演算子に加えて、 isNotEmpty()拡張関数を使用することもできます。

val nonEmpty = "42"
assertTrue { nonEmpty.isNotEmpty() }

String に加えて、これらの拡張機能は、StringBuilderなどのあらゆる種類のCharSequencesに適用できます。

val sb = StringBuilder()
assertTrue { sb.isEmpty() }

ここでは、指定されたStringBuilderが実際に空であることを確認しています。

null許容のStringの場合、 isNullOrEmpty()関数を使用して、値がnullであるか空であるかを確認することもできます。

val nullStr: String? = null
val emptyNullable: String? = ""

assertTrue { nullStr.isNullOrEmpty() }
assertTrue { emptyNullable.isNullOrEmpty() }

2.1. 条件付きロジックの簡素化

空の値を回避するために、従来のif-else条件分岐が必要になる場合があります。

val ipAddress = request.getHeader("X-FORWARDED-FOR")
val source = if (ipAddress.isEmpty()) "default-value" else ipAddress

Kotlin 1.3以降、 ifEmpty()高階関数を使用して、より機能的なアプローチでこの命令型スタイルを回避できます。

val source = request.getHeader("X-FORWARDED-FOR").ifEmpty { "default-value" }

ご覧のとおり、これははるかに単純で簡潔です。

3. 空白の文字列

文字列の長さがゼロであるか、空白文字のみが含まれている場合、文字列は空白になります。 null許容でない文字列が空白かどうかを確認するには、isBlankを使用できます。 ()関数:

val blank = "    "
val empty = ""
val notBlank = "  42"

assertTrue { empty.isBlank() }
assertTrue { blank.isBlank() }
assertTrue { notBlank.isNotBlank() }

isNotEmpty()と同様に、 isNotBlank()関数は、否定演算子のより読みやすい代替手段として機能します。

ここでも、 isNullOrEmpty()と非常によく似ており、 isNullOrBlank()関数があります。

val nullStr: String? = null
val blankNullable: String? = "   "

assertTrue { nullStr.isNullOrBlank() }
assertTrue { blankNullable.isNullOrBlank() }

この関数は、値がnullまたは空白の場合にtrueを返します。 これらすべての類似点に加えて、 ifBlank()高階関数は、空白値のデフォルトを提供するのに役立ちます。

4. 結論

このチュートリアルでは、文字列が空か空白かを確認するのに役立ついくつかの関数について理解しました。

いつものように、すべての例はGitHubから入手できます。