StringUtils.isBlank () 및 String.isEmpty ()


215

나는 다음과 같은 코드를 만났다.

String foo = getvalue("foo");
if (StringUtils.isBlank(foo))
    doStuff();
else
    doOtherStuff();

이것은 기능적으로 다음과 같은 것으로 보입니다.

String foo = getvalue("foo");
if (foo.isEmpty())
    doStuff();
else
    doOtherStuff();

두 ( org.apache.commons.lang3.StringUtils.isBlankjava.lang.String.isEmpty) 의 차이점이 있습니까?


7
가치는 또한이 있다고 언급 될 수 StringUtils.isEmpty(foo)방금처럼 널 포인터를 방지하는 데 도움이 isBlank있지만, 공백 문자를 확인하지 않습니다.
Xavi

답변:


380

StringUtils.isBlank()문자열의 각 문자가 공백 문자인지 확인하거나 문자열이 비어 있거나 null인지 확인합니다. 이것은 문자열이 비어 있는지 확인하는 것과는 완전히 다릅니다.

링크 된 문서에서 :

문자열이 공백인지, 비어 있는지 ( "") 또는 null인지 확인합니다.

 StringUtils.isBlank(null)      = true
 StringUtils.isBlank("")        = true  
 StringUtils.isBlank(" ")       = true  
 StringUtils.isBlank("bob")     = false  
 StringUtils.isBlank("  bob  ") = false

비교를 위해 StringUtils.isEmpty :

 StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true  
 StringUtils.isEmpty(" ")       = false  
 StringUtils.isEmpty("bob")     = false  
 StringUtils.isEmpty("  bob  ") = false

경고 :에서 java.lang.String의 .isBlank ()와 java.lang.String의 그들이 반환하지 않는 것을 제외하고 .isEmpty ()는 동일하게 작동 true을 위해 null.

java.lang.String.isBlank()

java.lang.String.isEmpty()


135

@arshajii의 답변은 완전히 정확합니다. 그러나 아래에서 더 명확하게 말하면

StringUtils.isBlank ()

 StringUtils.isBlank(null)      = true
 StringUtils.isBlank("")        = true  
 StringUtils.isBlank(" ")       = true  
 StringUtils.isBlank("bob")     = false  
 StringUtils.isBlank("  bob  ") = false

StringUtils.isEmpty

 StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true  
 StringUtils.isEmpty(" ")       = false  
 StringUtils.isEmpty("bob")     = false  
 StringUtils.isEmpty("  bob  ") = false


14

StringUtils.isBlank() 또한 null을 확인하지만 다음과 같습니다.

String foo = getvalue("foo");
if (foo.isEmpty())

발생합니다 NullPointerException경우 foo는 null입니다.


4
그보다 더 큰 차이가 있습니다. 내 대답을 참조하십시오.
arshajii

3
이것은 올바르지 않습니다. String.isEmpty ()는 null이면 true를 반환합니다. 최소한 apache.commons.lang 버전에 대해 이야기하는 경우. 스프링 버전에 대해 잘 모르겠습니다.
ryoung

1
내 의견의 의미가 수정되었습니다 (공평하게하기 위해 점점 더 명확해질 수 있음). StringUtils.isBlank ()와 StringUtils.isEmpty ()를 비교하지 않았습니다. 오히려 StringUtils.isBlank ()를 OP의 value.isEmpty ()와 비교하십시오.
chut

1
chut의 답변이 맞습니다. java String foo가 null 인 경우, foo.isEmpty ()는 NullPointerException을 발생시킵니다. 아파치 StringUtils.isBlank (foo)는 foo가 null 인 경우에도 true를 반환합니다.
user2590805 8

6

StringUtils.isBlanktrue공백 만 반환 합니다.

isBlank (문자열 str)

문자열이 공백인지, 비어 있는지 ( "") 또는 null인지 확인합니다.


5

StringUtils.isBlank(foo)널 검사를 수행합니다. 수행 foo.isEmpty()하고 foonull 인 경우 NullPointerException이 발생합니다.


그보다 더 큰 차이가 있습니다. 내 대답을 참조하십시오.
arshajii

2

StringUtils.isBlank ()는 공백 (공백)과 null 문자열에 대해서도 true를 반환합니다. 실제로 Char 시퀀스를 잘라낸 다음 확인을 수행합니다.

StringUtils.isEmpty ()는 String 매개 변수에 charsequence가 없거나 String 매개 변수가 null 인 경우 true를 반환합니다. 차이점은 String 매개 변수에 소용돌이가 포함되어 있으면 isEmpty ()가 false를 반환한다는 것입니다. 공백은 비어 있지 않은 상태로 간주합니다.


2

isBlank ()와 isEmpty ()의 유일한 차이점은 다음과 같습니다.

StringUtils.isBlank(" ")       = true //compared string value has space and considered as blank

StringUtils.isEmpty(" ")       = false //compared string value has space and not considered as empty

1
public static boolean isEmpty(String ptext) {
 return ptext == null || ptext.trim().length() == 0;
}

public static boolean isBlank(String ptext) {
 return ptext == null || ptext.trim().length() == 0;
}

둘 다 동일한 코드를 가지고 isBlank가 공백을 처리하는 방법은 아마도 isBlankString을 의미합니다.이 공백을 처리하기위한 코드가 있습니다.

public static boolean isBlankString( String pString ) {
 int strLength;
 if( pString == null || (strLength = pString.length()) == 0)
 return true;
 for(int i=0; i < strLength; i++)
 if(!Character.isWhitespace(pString.charAt(i)))
 return false;
 return false;
}

1

타사 lib를 사용하는 대신 Java 11 isBlank ()을 사용하십시오.

    String str1 = "";
    String str2 = "   ";
    Character ch = '\u0020';
    String str3 =ch+" "+ch;

    System.out.println(str1.isEmpty()); //true
    System.out.println(str2.isEmpty()); //false
    System.out.println(str3.isEmpty()); //false            

    System.out.println(str1.isBlank()); //true
    System.out.println(str2.isBlank()); //true
    System.out.println(str3.isBlank()); //true

-2

"String isBlank () Method"에 대한 Google의 최고 결과이기 때문에 이것에 답하고 있습니다.

Java 11 이상을 사용하는 경우 String 클래스 isBlank () 메소드를 사용할 수 있습니다 . 이 메소드는 Apache Commons StringUtils 클래스와 동일한 기능을 수행합니다.

이 방법 예제에 대한 작은 게시물을 작성했으며 여기를 읽으 십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.