어제 오늘 내일

[Java] String(문자열) 빈 값 체크하기 (null, 공백) 본문

IT/Java

[Java] String(문자열) 빈 값 체크하기 (null, 공백)

hi.anna 2021. 4. 25. 02:34

 

문자열(String)이 null 또는 빈 공백인지 체크하는 방법을 소개합니다.

 

 

1. isEmpty() - Java 6 이상

isEmpty()

  코드  

public class StringEmptyCheck {
    public static void main(String[] args) {

        String str1 = null;
        String str2 = "";
        String str3 = " ";

        System.out.println("str1 : " + isStringEmpty(str1)); // true
        System.out.println("str2 : " + isStringEmpty(str2)); // true
        System.out.println("str3 : " + isStringEmpty(str3)); // false

    }

    static boolean isStringEmpty(String str) {
        return str == null || str.isEmpty();
    }
}

  결과  

str1 : true
str2 : true
str3 : false

str == null || str.isEmpty();

먼저 문자열이 null인지 체크합니다.

그리고, java.lang.String 클래스의 isEmpty() 메소드를 호출하여

문자열의 길이가 0인지 체크합니다.

(isEmpty() 메소드는 Java 6 이후부터 사용할 수 있습니다.)

 

위 예제를 보면,

isEmpty() 메소드는 문자열의 길이를 체크해서 빈문자열인지 판단하기 때문에

문자열에 공백이 있을 경우에는 isEmpty() 메소드는 false를 리턴합니다.

 

trim().isEmpty()

  코드  

공백이 있는 문자열도 빈문자열로 체크하게 하기 위해서,

isEmpty() 메소드를 호출하기 전에 trim() 메소드를 호출해 줍니다.

trim() 메소드는 문자열의 앞뒤 공백을 제거해 주는 메소드입니다.

[Java] 문자열 앞뒤 공백 제거하기 (trim() vs strip() 차이)

public class StringEmptyCheck {
    public static void main(String[] args) {

        String str1 = null;
        String str2 = "";
        String str3 = " ";

        System.out.println("str1 : " + isStringEmpty(str1)); // true
        System.out.println("str2 : " + isStringEmpty(str2)); // true
        System.out.println("str3 : " + isStringEmpty(str3)); // true

    }

    static boolean isStringEmpty(String str) {
        return str == null || str.trim().isEmpty();
    }
}

  결과  

str1 : true
str2 : true
str3 : true

str == null || str.trim().isEmpty();

위 코드에서는 isEmpty() 메소드를 호출하기 전에,

trim() 메소드를 호출하여 문자열의 앞뒤 공백을 제거하였습니다.

공백이 있는 문자열도, 공백으로 체크되어 true를 리턴하는 것을 확인할 수 있습니다.

 

 

 

2. length() - Java 5 이하

lengh() 체크

  코드  

public class StringEmptyCheck {
    public static void main(String[] args) {

        String str1 = null;
        String str2 = "";
        String str3 = " ";

        System.out.println("str1 : " + isStringEmpty(str1)); // true
        System.out.println("str2 : " + isStringEmpty(str2)); // true
        System.out.println("str3 : " + isStringEmpty(str3)); // false

    }

    static boolean isStringEmpty(String str) {
        return str == null || str.length() == 0;
    }
}

  결과  

str1 : true
str2 : true
str3 : false

str == null || str.length() == 0;

Java 5 이하에서는 isEmpty() 메소드를 사용할 수 없습니다.

따라서, 위와 같이 문자열의 길이를 length() 메소드를 이용하여 직접 체크해 주어야 합니다.

여기서도, isEmpty() 예제와 마찬가지로

공백이 있는 문자열은 길이가 0이 아니므로, 빈 문자열로 체크되지 않습니다.

 

trim().length() 체크

  코드  

public class StringEmptyCheck {
    public static void main(String[] args) {

        String str1 = null;
        String str2 = "";
        String str3 = " ";

        System.out.println("str1 : " + isStringEmpty(str1)); // true
        System.out.println("str2 : " + isStringEmpty(str2)); // true
        System.out.println("str3 : " + isStringEmpty(str3)); // true

    }

    static boolean isStringEmpty(String str) {
        return str == null || str.trim().length() == 0;
    }
}

  결과  

str1 : true
str2 : true
str3 : true

str == null || str.trim().length() == 0;

isEmpty() 메소드 예제와 마찬가지로

공백만으로 이루어진 문자열도 빈 문자열로 체크해 주기 위해서

문자열의 길이를 체크하기 전에

trim() 메소드를 이용하여, 문자열 앞뒤의 공백을 제거해 주었습니다.

 

 

 

3. isBlank() - 공백 체크 (Java 11 이상)

  코드  

public class StringEmptyCheck {
    public static void main(String[] args) {

        String str1 = null;
        String str2 = "";
        String str3 = " ";

        System.out.println("str1 : " + isStringEmpty(str1)); // true
        System.out.println("str2 : " + isStringEmpty(str2)); // true
        System.out.println("str3 : " + isStringEmpty(str3)); // true

    }

    static boolean isStringEmpty(String str) {
        return str == null || str.isBlank();
    }
}

  결과  

str1 : true
str2 : true
str3 : true

str == null || str.isBlank();

Java 11이상에서는 isBlank() 메소드를 사용할 수 있습니다.

isBlank() 메소드는 빈 문자열이거나, 공백만으로 이루어진 문자열인 경우 true를 리턴합니다.

isBlank() 메소드를 사용하면, 앞의 예제처럼 trim() 메소드를 호출해 주지 않아도 됩니다.

 

 


 

Java 버전별로 빈 문자열 체크하는 방법을 알아보았습니다.

 

 

반응형
Comments