본문 바로가기
IT 개발 이야기/Java

[Java] 자바 문자열 공백 제거 및 Null 체크 - JDK 버전 별 사용 예제

by 개발자 Aiden 2023. 3. 2.
반응형

Java-문자열공백제거

안녕하세요! 이번 글에서는 자바를 사용하는데 필수적인 문자열 처리 기법 중 하나인 공백 제거 및 Null 체크에 대해 알아보겠습니다. JDK 버전 별로 다양한 방법을 사용하여 공백 제거와 Null 체크를 수행하는 방법을 소개하고, 예제를 통해 각 방법의 사용법을 이해해 보겠습니다.

Java에서 문자열 공백 또는 Null 체크 방법


Java에서 문자열을 처리할 때, 공백 또는 Null 값을 올바르게 체크하는 것이 매우 중요합니다. 공백이나 Null 값에 대한 적절한 처리가 없으면, 서비스 로직에서 예기치 않은 오류가 발생할 수 있습니다. 따라서 문자열 처리 시 공백 및 Null 체크를 효과적으로 수행하는 방법을 알아두는 것이 좋습니다.


○ isEmpty() - Java 1.6 이상

public class StringUtil {

  public static boolean isEmpty(String text) {
    // return text == null || text.trim().isEmpty();	
    return text == null || text.isEmpty();
  }
		
  public static void main(String[] args) {		
    System.out.println(StringUtil.isEmpty(null));
    System.out.println(StringUtil.isEmpty(" ")); // false.
    System.out.println(StringUtil.isEmpty(" Aiden 개발자의 하루\n "));
  }
}

--- Result ---------------------------------------------------------

true
false
false


실행 결과를 확인해 보면, isEmpty(" ") 메서드의 반환 값이 false임을 알 수 있습니다.
즉, 이 결과는 공백도 문자로 판단한다는 것을 보여줍니다.

  @Override
  public boolean isEmpty() {
    return value.length == 0;
  }


이유는 공백이 value.length에 영향을 주기 때문입니다. 따라서 java.lang.String 클래스의 isEmpty() 메서드는 trim()과 함께 사용하는 것이 좋습니다. 예를 들면, text.trim().isEmpty()는 true 값을 반환합니다.

참고로, org.springframework.util.StringUtils 클래스의 isEmpty() 메서드는 접근 문자열의 null 여부를 먼저 체크하지만, java.lang.String 클래스의 isEmpty() 메서드는 null 여부를 직접 구현해줘야 합니다.

※ Spring 5.3.0 버전부터 Deprecated. StringUtils 사용 시 주의하시기 바랍니다.

 

○ isBlank() - Java 11 이상

public class StringUtil {

  public static boolean isBlank(String text) {
    return text == null || text.isBlank();
  }	
	
  public static void main(String[] args) {
    System.out.println(StringUtil.isBlank(null));
    System.out.println(StringUtil.isBlank(" ")); // true
    System.out.println(StringUtil.isBlank(" Aiden 개발자의 하루\n "));
  }
}

--- Result ---------------------------------------------------------

true
true
false


java.lang.String 클래스의 isBlank() 메서드는 String.trim().isEmpty() 호출과 동일한 결과를 반환합니다.

반응형

 

Java에서 문자열 공백 제거 방법


○ trim() - Java 1.6 이상에서 사용 가능( 정확한 Since 정보 확인 불가 )

public class StringUtil {
	
  public static String trim(String text) {
    return text.trim();
  }
		
  public static void main(String[] args) {
    String text = "  [ Aiden 개발자의 하루 ]  ";
    System.out.println("'" + StringUtil.trim(text) + "'");
  }
}

--- Result ----------------------------------------------

'[ Aiden 개발자의 하루 ]'


trim() 메소드는 문자열 앞뒤의 공백만 제거합니다.

 

○ replaceAll() - Java 1.4 이상

public class StringUtil {

  public static String replaceAll(String text) {
    return text.replaceAll(" ", "");
  }
	
  public static void main(String[] args) {		
    String text = "  [ Aiden 개발자의 하루 ]  ";
    System.out.println("'" + StringUtil.replaceAll(text) + "'");
  }
}

--- Result ----------------------------------------------------

'[Aiden개발자의하루]'


replaceAll() 메서드는 전체 문자열을 대상으로 " "(공백)을 ""(빈 문자열)로 변환하여 공백을 제거합니다.

 

○ strip() - Java 11 이상

public class StringUtil {
	
  public static String strip(String text) {
    return text.strip();
  }
		
  public static void main(String[] args) {
    String text = "  [ Aiden 개발자의 하루 ]  ";
    System.out.println("'" + StringUtil.strip(text) + "'");
  }
}

--- Result -----------------------------------------------

'[ Aiden 개발자의 하루 ]'


strip()
 메서드는 문자열 앞뒤의 공백만 제거합니다.

위 테스트 결과만 보면 trim()과 동일한 수준으로 볼 수 있겠지만, 상위 버전에서는 차이가 존재합니다.

trim() 메서드는 U+0020( 일반 ASCII 공백 ) 이하의 공백만 제거할 수 있기 때문에, 다양한 유니코드 공백 문자를 쉽게 처리할 수 있도록 strip() 메서드 Java 11부터 신규 추가 되었습니다.

 

○ stripLeading(), stripTrailing() - Java 11 이상

public class StringUtil {
	
  public static String stripLeading(String text) {
    return text.stripLeading();
  }
	
  public static String stripTrailing(String text) {
    return text.stripTrailing();
  }
	
  public static void main(String[] args) {
    String text = "  [ Aiden 개발자의 하루 ]  ";
    System.out.println("'" + StringUtil.stripLeading(text) + "'");
    System.out.println("'" + StringUtil.stripTrailing(text) + "'");
  }
}

--- Result ------------------------------------------------------

'[ Aiden 개발자의 하루 ]  '
'  [ Aiden 개발자의 하루 ]'


stripLeading() 메서드는 문자열 앞의 공백을 제거하며,
stripTrailing() 메서드는 문자열 뒤의 공백을 제거합니다.

 

※ 문자열 공백 제거 결과 비교

public class StringUtil {
	
  public static String replaceAll(String text) {
    return text.replaceAll(" ", "");
  }	
  public static String trim(String text) {
    return text.trim();
  }	
  public static String strip(String text) {
    return text.strip();
  }	
  public static String stripLeading(String text) {
    return text.stripLeading();
  }
  public static String stripTrailing(String text) {
    return text.stripTrailing();
  }
	
  public static void main(String[] args) {
    String text = "  [ Aiden 개발자의 하루 ]  ";
    System.out.println("text          : '" + text + "'");
    System.out.println("trim          : '" + StringUtil.trim(text) + "'");
    System.out.println("replaceAll    : '" + StringUtil.replaceAll(text) + "'");
    System.out.println("strip         : '" + StringUtil.strip(text) + "'");
    System.out.println("stripLeading  : '" + StringUtil.stripLeading(text) + "'");
    System.out.println("stripTrailing : '" + StringUtil.stripTrailing(text) + "'");
  }
}

--- Result ----------------------------------------------------------------------

text          : '  [ Aiden 개발자의 하루 ]  '
trim          : '[ Aiden 개발자의 하루 ]'
replaceAll    : '[Aiden개발자의하루]'
strip         : '[ Aiden 개발자의 하루 ]'
stripLeading  : '[ Aiden 개발자의 하루 ]  '
stripTrailing : '  [ Aiden 개발자의 하루 ]'


지금까지 Java에서 문자열의 공백 제거 및 Null 체크 방법에 대해 살펴보았습니다.

 

반응형

댓글


loading