目次
Kotlinの文字列はisBlank()
というメソッドと、isEmpty()
というメソッドを持っています。 これらの違いについてまとめました。
環境
- Kotlin 1.2.0
Empty
Empty は空を表します。 isEmpty
はから文字列との比較(value == ""
)と同じです。 なにもないことを表します。
コード上は、文字列の長さがゼロかを判定しています。
1 2 3 4 5 |
/** * Returns `true` if this char sequence is empty (contains no characters). */ @kotlin.internal.InlineOnly public inline fun CharSequence.isEmpty(): Boolean = length == 0 |
isEmpty
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
% kotlinc Welcome to Kotlin version 1.2.0 (JRE 1.8.0_151-8u151-b12-0ubuntu0.17.04.2-b12) Type :help for help, :quit for quit >>> "test".isEmpty() false >>> "".isEmpty() true >>> null.isEmpty() error: only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Nothing? null.isEmpty() ^ error: type inference failed: Not enough information to infer parameter T in inline fun <T> Array<out T>.isEmpty(): Boolean Please specify it explicitly. null.isEmpty() ^ |
Blank
Blank は埋められていない、印刷されないことを意味します。 isBlank
はスペースからなる文字列または空の場合に true
を返します。 全角スペース、タブ、改行が含まれていても true
を返します。
1 2 3 4 |
/** * Returns `true` if this string is empty or consists solely of whitespace characters. */ public fun CharSequence.isBlank(): Boolean = length == 0 || indices.all { this[it].isWhitespace() } |
内部的には isWhitespace
というメソッドを使って判定をしています。
1 2 3 4 5 |
/** * Determines whether a character is whitespace according to the Unicode standard. * Returns `true` if the character is whitespace. */ public fun Char.isWhitespace(): Boolean = Character.isWhitespace(this) || Character.isSpaceChar(this) |
そして isWhitespace
は Java の isWhitespace
, isSpaceChar
を使っています。
isBlank
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
% kotlinc Welcome to Kotlin version 1.2.0 (JRE 1.8.0_151-8u151-b12-0ubuntu0.17.04.2-b12) Type :help for help, :quit for quit >>> "".isBlank() true >>> "test".isBlank() false >>> "tn r".isBlank() true >>> "tn r".isEmpty() false >>> null.isBlank() error: only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Nothing? null.isBlank() ^ |
Empty
と Blank
の英語での意味
英語での意味は上に書いた通りです。 使用例とともに掲載します。
- Empty
-
空、なにもないことを表す。
empty bottle
- Blank
-
なにも書かれていない、なにも表示されていない。
blank form, blank sheet
中には empty, blank 両方使える場合もあります。
empty も blank も形容詞ですから、 比較級と最上級があります(emptier, emptiest, blanker, blankest)。 言語上正しい言葉ですが、使われることはとても稀です。
付随するメソッド
Kotlin には、 isEmpty
, isBlank
を組み合わせた次のメソッドが用意されています。
isNotEmpty
isNullOrEmpty
isNotBlank
isNullOrBlank