[java] 문자열이 null이 아니고 비어 있지 않은지 확인하십시오.

문자열이 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는 첫 번째 부분이 &&실패하면 두 번째 부분을 평가하지 않으므로이 부분을 순서대로 사용하십시오 . 따라서 str.isEmpty()if str가 null이면 널 포인터 예외가 발생하지 않습니다 .

Java SE 1.6 이후에만 사용할 수 있습니다. str.length() == 0이전 버전 을 확인해야합니다 .


공백도 무시하려면 :

if(str != null && !str.trim().isEmpty())

(Java 11 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 ) )


답변

org.apache.commons.lang.StringUtils 사용

이런 종류의 것들, 특히 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에 추가하려면 구아바 방법은 다음과 같습니다.

Strings.nullToEmpty(str).isEmpty();
// or
Strings.isNullOrEmpty(str);

Commons Lang은 때때로 더 읽기 쉬워졌지만 천천히 Guava에 더 많이 의존하고 있으며 Commons Lang isBlank()은 공백이 무엇인지와 같이 혼란 스러울 수 있습니다.

구아바의 Commons Lang 버전 isBlank은 다음과 같습니다.

Strings.nullToEmpty(str).trim().isEmpty()

나는 말할 것이다 허용하지 않는 코드 ""(빈) null 의심과 아마 허용하지 않습니다 모든 경우에 처리하지 않는 잠재적 버그가 null차종 감각 (SQL / HQL 이상한 약으로 SQL 내가 이해할 수에 대한 있지만 '').


답변

str != null && str.length() != 0

대안 적으로

str != null && !str.equals("")

또는

str != null && !"".equals(str)

참고 : 두 번째 검사 (첫 번째 및 두 번째 대안)는 str이 null이 아니라고 가정합니다. 첫 번째 검사가 그렇게하기 때문에 괜찮습니다 (첫 번째 검사가 거짓이면 Java는 두 번째 검사를 수행하지 않습니다)!

중요 : 문자열 동등성을 위해 ==를 사용하지 마십시오. == 포인터가 값이 아닌 동일한 지 확인합니다. 두 개의 문자열은 다른 메모리 주소 (두 인스턴스)에있을 수 있지만 동일한 값을 갖습니다!


답변

거의 모든 라이브러리 나는 정의를라는 유틸리티 클래스를 알고 StringUtils, StringUtil또는 StringHelper, 그들은 일반적으로 당신이 찾고있는 방법을들 수있다.

내 개인적인 마음에 드는는 아파치 코 몬즈 / 랭 에, StringUtils에의 클래스, 당신이 얻을 모두

  1. StringUtils.isEmpty (String)
  2. StringUtils.isBlank (String) 메서드

(첫 번째는 문자열이 null인지 비어 있는지 확인하고, 두 번째는 문자열이 null인지, 비어 있는지 또는 공백인지 확인합니다.)

Spring, Wicket 및 기타 많은 라이브러리에 유사한 유틸리티 클래스가 있습니다. 외부 라이브러리를 사용하지 않는 경우 자신의 프로젝트에 StringUtils 클래스를 도입 할 수 있습니다.


업데이트 : 몇 년이 지났으며 요즘에는 GuavaStrings.isNullOrEmpty(string)방법을 사용하는 것이 좋습니다 .


답변

이것은 나를 위해 작동합니다 :

import com.google.common.base.Strings;

if (!Strings.isNullOrEmpty(myString)) {
       return myString;
}

주어진 문자열이 null이거나 빈 문자열이면 true를 반환합니다.

nullToEmpty로 문자열 참조를 정규화하는 것을 고려하십시오. 그렇게하면이 메서드 대신 String.isEmpty ()를 사용할 수 있으며 String.toUpperCase와 같은 특수한 null 안전 형식의 메서드도 필요하지 않습니다. 또는 빈 문자열을 null로 변환하여 “다른 방향으로”정규화하려면 emptyToNull을 사용할 수 있습니다.