【Java】nullや空文字、空白文字の入力チェック


Java

Apache Commons LangのStringUtilsクラスが便利。
nullや空文字、空白文字の入力チェックにはStringUtilsを利用しよう。

いつも。isEmpty使うかisBlankで迷う。
必須入力項目なら、空白を許可するならisEmpty。
主キーの項目なら、空白文字を許可しないisBlankがいいかな。


isEmpty

public static boolean isEmpty(java.lang.String str)
チェック対象の文字列がNULL、または空文字かどうかチェックする。
パラメータ: str – チェック対象の文字列
戻り値: チェック対象の文字列がNULL、または空文字の場合はtrue、そうでない場合はfalse

StringUtils.isEmpty(null) の場合 true
StringUtils.isEmpty(“”) の場合 true
StringUtils.isEmpty(” “) の場合 false
StringUtils.isEmpty(“ ”) の場合 false
StringUtils.isEmpty(“hoge”) の場合 false


isNotEmpty

public static boolean isNotEmpty(java.lang.String str)
チェック対象の文字列がNULLでない、かつ空文字でないかどうかチェックする。

パラメータ: str – チェック対象の文字列
戻り値: チェック対象の文字列がNULLでない、かつ空文字でない場合はtrue、そうでない場合はfalse

StringUtils.isNotEmpty(null) の場合 false
StringUtils.isNotEmpty(“”) の場合 false
StringUtils.isNotEmpty(” “) の場合 true
StringUtils.isNotEmpty(“ ”) の場合 true
StringUtils.isNotEmpty(“hoge”) の場合 true


isBlank

public static boolean isBlank(java.lang.String str)

チェック対象の文字列が空白文字(注1)、または空文字、またはNULLかどうかチェックする。
パラメータ: str – チェック対象の文字列
戻り値: チェック対象の文字列が空白文字、または空文字、またはNULLの場合はtrue、そうでない場合はfalse

StringUtils.isBlank(null) の場合 true
StringUtils.isBlank(“”) の場合 true
StringUtils.isBlank(” “) の場合 true
StringUtils.isBlank(“ ”) の場合 true
StringUtils.isBlank(“hoge”) の場合 false


isNotBlank

public static boolean isNotBlank(java.lang.String str)

チェック対象の文字列が空白文字(注1)でない、かつ空文字でない、かつNULLでないかどうかチェックする。
パラメータ: str – チェック対象の文字列
戻り値: チェック対象の文字列が空白文字でない、かつ空文字でない、かつNULLでない場合はtrue、そうでない場合はfalse

StringUtils.isNotBlank(null) の場合 false
StringUtils.isNotBlank(“”) の場合 false
StringUtils.isNotBlank(” “) の場合 false
StringUtils.isNotBlank(“ ”) の場合 false
StringUtils.isNotBlank(“hoge”) の場合 true


注1 空白文字はCharacter.isWhitespaceで定義された文字列のこと。
半角スペース、全角スペースを含みます。

Character.isWhitespace(‘ ‘) の場合 true
Character.isWhitespace(‘ ’) の場合 true
Character.isWhitespace(‘\r’) の場合 true ※CARRIAGE RETURN
Character.isWhitespace(‘\n’) の場合 true ※LINE FEED
Character.isWhitespace(‘\t’) の場合 true ※HORIZONTAL TABULATION HT
こんな書き方もできます。
Character.isWhitespace(‘\u0009’) の場合 true ※いわゆる\t HORIZONTAL TABULATION HT
Character.isWhitespace(‘\u000B’) の場合 true ※VERTICAL TABULATION
Character.isWhitespace(‘\u000C’) の場合 true ※いわゆる\f FORM FEED FF
Character.isWhitespace(‘\u001C’) の場合 true ※FILE SEPARATOR
Character.isWhitespace(‘\u001D’) の場合 true ※GROUP SEPARATOR
Character.isWhitespace(‘\u001E’) の場合 true ※RECORD SEPARATOR
Character.isWhitespace(‘\u001F’) の場合 true ※UNIT SEPARATOR


おまけ

Character.isWhitespace(‘c’) の場合 false
Character.isWhitespace() の場合 コンパイルエラー(引数なし)
Character.isWhitespace(”) の場合 コンパイルエラー(文字定数無効)
Character.isWhitespace(‘hoge’) の場合 コンパイルエラー(文字列だし)
Character.isWhitespace(‘\b’) の場合 false ※いわゆる\b backspace BS
Character.isWhitespace(‘\u0008’) の場合 false ※いわゆる\b backspace BS
Character.isWhitespace(‘ ‘\u000A\u000D)) …CARRIAGE RETURNとLINE FEED(笑)※いわゆる\r\n

CR LFはisWhitespaceで比較できなかった。

【空白文字の参考サイト】
Character (Java Platform SE 6)
http://docs.oracle.com/javase/jp/6/api/java/lang/Character.html#isWhitespace(char)


指定された文字が Java の基準に従った空白かどうかを判定します。次の基準のどれかを満たす場合にだけ、Java の空白文字になります。
•Unicode の空白文字 (SPACE_SEPARATOR、LINE_SEPARATOR、または PARAGRAPH_SEPARATOR) であるが、非区切りスペース (‘\u00A0’、’\u2007’、’\u202F’) ではない
•’\u0009’、HORIZONTAL TABULATION である
•’\u000A’、LINE FEED である
•’\u000B’、VERTICAL TABULATION である
•’\u000C’、FORM FEED である
•’\u000D’、CARRIAGE RETURN である
•’\u001C’、FILE SEPARATOR である
•’\u001D’、GROUP SEPARATOR である
•’\u001E’、RECORD SEPARATOR である
•’\u001F’、UNIT SEPARATOR である


【参考サイト】
Apache Commons Lang – StringUtils(IsEmpty – IsBlank) TK Factory

キリン・シティ 新横浜 (Kirin City)

2009-04-22 – 倭マン日記 Java と XML と空白と (2) : 正規表現
http://d.hatena.ne.jp/waman/20090422


あなたの「いいね」が欲しいです。
「【Java】nullや空文字、空白文字の入力チェック」をシェアする
Twitter Facebook G plus このエントリーをはてなブックマークに追加 G plus LINE