文字列がnullでも空でもないかどうかを確認するにはどうすればよいですか?
public void doStuff(String str)
{
if (str != null && str != "**here I want to check the 'str' is empty or not**")
{
/* handle empty string */
}
/* ... */
}
文字列がnullでも空でもないかどうかを確認するにはどうすればよいですか?
public void doStuff(String str)
{
if (str != null && str != "**here I want to check the 'str' is empty or not**")
{
/* handle empty string */
}
/* ... */
}
isEmpty()はどうですか?
if(str != null && !str.isEmpty())
&&
の最初の部分が&&
失敗した場合、Java は 2 番目の部分の評価を続行しstr.isEmpty()
ないため、この順序での部分を使用してくださいstr
。
Java SE 1.6 以降でしか利用できないことに注意してください。str.length() == 0
以前のバージョンを確認する必要があります。
空白も無視するには:
if(str != null && !str.trim().isEmpty())
(Java 11は、他の Unicode 空白もテストするstr.trim().isEmpty()
ように縮小できるため)str.isBlank()
便利な関数にラップ:
public static boolean empty( final String s ) {
// Null-safe, short-circuit evaluation.
return s == null || s.trim().isEmpty();
}
なる:
if( !empty( str ) )
私はこれらの種類のもの、特にStringUtilsユーティリティ クラスに Apache commons-langを使用するのが好きです。
import org.apache.commons.lang.StringUtils;
if (StringUtils.isNotBlank(str)) {
...
}
if (StringUtils.isBlank(str)) {
...
}
ここに Android を追加するだけです。
import android.text.TextUtils;
if (!TextUtils.isEmpty(str)) {
...
}
@BJorn と @SeanPatrickFloyd に追加するには、これを行う Guava の方法は次のとおりです。
Strings.nullToEmpty(str).isEmpty();
// or
Strings.isNullOrEmpty(str);
Commons Lang の方が読みやすい場合もありますが、私はゆっくりと Guava に依存するようになりました。また、Commons Lang が混乱することもisBlank()
あります (空白とは何かなど)。
Guava の Commons Lang のバージョンは次のisBlank
ようになります。
Strings.nullToEmpty(str).trim().isEmpty()
許可しない""
(空)かつ 疑わしく、バグの可能性があるコードと言うと、許可しないことが理にかなってnull
いるすべてのケースを処理できない可能性があります (ただし、SQL については、SQL/HQL が奇妙であるため理解できます)。null
''
str != null && str.length() != 0
代わりに
str != null && !str.equals("")
また
str != null && !"".equals(str)
注: 2 番目のチェック (1 番目と 2 番目の選択肢) は、str が null ではないことを前提としています。最初のチェックがそれを行っているという理由だけで問題ありません (そして、最初のチェックが false の場合、Java は 2 番目のチェックを行いません)!
重要: 文字列の等価性に == を使用しないでください。== は、値ではなくポインターが等しいことを確認します。2 つの文字列が異なるメモリ アドレス (2 つのインスタンス) に存在する可能性がありますが、値は同じです!
私が知っているほとんどすべてのライブラリはStringUtils
、 、StringUtil
またはと呼ばれるユーティリティ クラスを定義してStringHelper
おり、通常、探しているメソッドが含まれています。
私の個人的なお気に入りはApache Commons / Langです。StringUtilsクラスでは、
(1 つ目は文字列が null または空かどうかをチェックし、2 つ目は文字列が null、空、または空白のみかどうかをチェックします)
Spring、Wicket、および他の多くのライブラリにも同様のユーティリティ クラスがあります。外部ライブラリを使用しない場合は、独自のプロジェクトに StringUtils クラスを導入することをお勧めします。
更新: 何年も経ちましたが、最近ではGuavaのStrings.isNullOrEmpty(string)
方法を使用することをお勧めします。
これは私のために働く:
import com.google.common.base.Strings;
if (!Strings.isNullOrEmpty(myString)) {
return myString;
}
指定された文字列が null または空の文字列である場合に true を返します。
nullToEmpty を使用して文字列参照を正規化することを検討してください。その場合、このメソッドの代わりに String.isEmpty() を使用できます。また、String.toUpperCase のような特殊な null セーフ形式のメソッドも必要ありません。または、空の文字列を null に変換して「逆方向に」正規化したい場合は、emptyToNull を使用できます。
どうですか:
if(str!= null && str.length() != 0 )
Apache StringUtils の isNotBlank メソッドを次のように使用します。
StringUtils.isNotBlank(str)
str が null ではなく、空でない場合にのみ true を返します。
入力に基づいて true または false を返します
Predicate<String> p = (s)-> ( s != null && !s.isEmpty());
p.test(string);
test equals は、同じ条件で空の文字列と null に等しい:
if(!"".equals(str) && str != null) {
// do stuff.
}
arg が の場合は false を返すNullPointerException
ため、str が null の場合はスローしません。Object.equals()
null
もう 1 つの構成str.equals("")
は、dreaded をスローしNullPointerException
ます。呼び出されるオブジェクトとして文字列リテラルを使用する悪い形式を考える人もいるかもしれませんequals()
が、それは仕事をします。
この回答も確認してください:https://stackoverflow.com/a/531825/1532705
上で seanizer が言ったように、Apache StringUtils はこれに最適です。guava を含める場合は、次のようにする必要があります。
public List<Employee> findEmployees(String str, int dep) {
Preconditions.checkState(StringUtils.isNotBlank(str), "Invalid input, input is blank or null");
/** code here **/
}
また、結果セット内の列をインデックスではなく名前で参照することをお勧めします。これにより、コードの保守がはるかに簡単になります。
StringUtils.isEmpty() を使用できます。文字列が null または空の場合は true になります。
String str1 = "";
String str2 = null;
if(StringUtils.isEmpty(str)){
System.out.println("str1 is null or empty");
}
if(StringUtils.isEmpty(str2)){
System.out.println("str2 is null or empty");
}
結果として
str1 が null または空です
str2 が null または空です
文字列で null を処理するより良い方法は、
str!=null && !str.equalsIgnoreCase("null") && !str.isEmpty()
要するに、
str.length()>0 && !str.equalsIgnoreCase("null")