arison.jp arison.jp blog - 現在をたのしく、未来をたのしむ。日常の思い出兼備忘録。

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

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
http://tk-factory.net/wordpress/?p=1429

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

About arison

大都会岡山の南部にある玉野市生まれ。 大都会岡山のIT会社(目標は大都会No.1)でコンピュータとお客を相手に日夜格闘中。 関東出張中はグルメブログ。 基本的に遊び人のおっさん。 ライフハックとガンダム好き。ギガフロート玉野を浸透中。

06. 2月 2013 by arison
Categories: 日記, プログラミング | Tags: , | Leave a comment

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください