2015-09-14 11 views
15

これは、以前はisEmptyOrNullが非常に一般的ですが、人々がそれを別々に実装するため、これまでに異なる方法で質問されていたはずです。しかし、私は、メモリとパフォーマンスの両方に適した最良の利用可能なアプローチの点で、不思議な質問があります。文字列が空であるかヌルであるかを確認する最良の方法

1)以下は、1以下

return inputString==null || inputString.length()==0; 

2)が世話をするが、いくつかのパフォーマンス+メモリ

return inputString==null || inputString.trim().length()==0; 

3を食べることができるトリム空のXMLタグの場合のようにすべてのスペースを考慮していません)パターンマッチャに変換

private static final Pattern p = Pattern.compile("\\s+"); 

return inputString==null || inputString.length()==0 || p.matcher(inputString).matches(); 

4)その他(文字列が非ゼロの長さである場合にのみ起動されますか)?

+0

inputString!= null && inputString.isEmpty();より洗練されたinputString!= null && inputString.trim()。isEmpty(); – StackFlowed

+0

また、Apache String utils [isEmpty()](http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#isEmpty(java.lang))を使用することもできます。 CharSequence))これはスペースチェックと同様にヌルチェックを行います。 – StackFlowed

+0

'isEmpty'はjava 6で" new "であり、古いバージョンまたはjava 5との互換性を保つ実装は長さチェックを使用する必要があります。 – zapl

答えて

10
if(myString==null || myString.isEmpty()){ 
    //do something 
} 
+1

更新ありがとうございます。私は必然的に毎回その間違いを作り、それをコンパイルし、エラーを見て、90億回目にこの間違いを起こしたと気づいています:) – GregH

+1

@zaplまたはjavaの文は短絡です。 myStringがnullの場合、破損します –

+0

@JamesWierzbaの回答は、混乱を避けるためにヌルの場合にNPEとの短絡を行うif(s.isEmpty || s == null) 'コメントが削除されました。 – zapl

8

null値を削除するためのjava 8のスタンスを表示するだけです。

String s = Optional.ofNullable(myString).orElse(""); 
if (s.trim().isEmpty()) { 
    ... 
} 

Optional<String>を使用できる場合は意味があります。引数が空またはnullの場合

+0

Joopさん、ありがとうございます。クリーンな解決策です - ""のような空白の空白文字列にはうまくいきません。 – prash

+0

@prash:良い注文のトリムを追加しましたが、Apacheのコモンズは無敵です。 ;) –

2

のApache Commonsのラングはtrueを返しますStringUtils.isEmpty(String str)方法があり

のApache Commonsのから
5

Googleのグアバからのこの1がチェックできます同じ時間に "ヌルと空の文字列"を取り出します。

Strings.isNullOrEmpty("Your string."); 

のGradle

dependencies { 
    compile 'com.google.guava:guava:20.0' 
} 
+0

'Strings'クラスを使用しているライブラリについて教えてください。 –

+1

「Google Guava」から。私は図書館で答えを編集しました。 –

+0

Guavaの依存関係のサイズ:文字列がヌルか空であるかどうかをチェックするための2.3 MB ... Guavaはモジュール化の欠如があります。 – Aure77

0
Optional.ofNullable(label) 
.map(String::trim) 
.map(string -> !label.isEmpty) 
.orElse(false) 

OR

TextUtils.isNotBlank(label);

とMavenの

<dependency> 
    <groupId>com.google.guava</groupId> 
    <artifactId>guava</artifactId> 
    <version>20.0</version> 
</dependency> 

との依存関係を追加します。

最後の解決策を確認していない場合はnullと単純に、はっきりと同時に

0

をSTRをtrimmます:ほとんどの場合

if (str == null || str.trim().length() == 0) { 
    // str is empty 
} 
0

を、ApacheのコモンズライブラリからStringUtils.isBlank(str)がそれを解決するだろう。しかし、チェックされる入力文字列が引用符でヌル値を持つ場合がある場合、そのような場合をチェックすることはできません。

ここでは、String.valueOf(obj) APIを使用して文字列に変換された入力オブジェクトがある例を示します。 obj参照がnullの場合、String.valueOfはnullではなくnullを返します。

StringUtils.isBlank("null")を使用しようとすると、APIが悲惨に失敗します。そのようなユースケースもチェックして、検証が適切かどうかを確認する必要があります。

関連する問題