Java 공백 문자 처리 완벽 가이드

Java에서 공백 문자를 제거하고 처리하는 다양한 방법을 알아보세요.

1. trim() 메서드 사용

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

기본 사용법:

String text = "  안녕하세요  ";
String result = text.trim();
System.out.println(result); // "안녕하세요"

⚠️ 주의사항:

  • trim()은 앞뒤 공백만 제거합니다 (U+0020 이하의 공백 문자)
  • 문자열 중간의 공백은 제거하지 않습니다
  • 전각 공백(U+3000)은 제거하지 않습니다

2. replaceAll() 메서드 사용

replaceAll() 메서드는 정규식을 사용하여 모든 공백을 제거할 수 있습니다.

모든 공백 제거:

String text = "안녕  하세요";
String result = text.replaceAll("\\s", "");
System.out.println(result); // "안녕하세요"

// 여러 공백을 하나로
String normalized = text.replaceAll("\\s+", " ");
System.out.println(normalized); // "안녕 하세요"

특수 공백 제거:

// 전각 공백 제거
String text = "안녕 하세요";
String result = text.replaceAll("\\u3000", "");
System.out.println(result); // "안녕하세요"

// 모든 종류의 공백 제거
String allSpaces = text.replaceAll("[\\s\\u00A0\\u3000]", "");
System.out.println(allSpaces);

3. replace() 메서드 사용

replace() 메서드는 특정 문자를 다른 문자로 바꿀 수 있습니다.

String text = "안녕 하세요";
String result = text.replace(" ", "");
System.out.println(result); // "안녕하세요"

// 모든 공백 제거 (반복)
String allSpaces = text.replace(" ", "");
while (allSpaces.contains(" ")) {
    allSpaces = allSpaces.replace(" ", "");
}

4. Apache Commons Lang 사용

Apache Commons Lang 라이브러리를 사용하면 더 강력한 공백 처리가 가능합니다.

// Maven 의존성 추가 필요
// <dependency>
//     <groupId>org.apache.commons</groupId>
//     <artifactId>commons-lang3</artifactId>
//     <version>3.12.0</version>
// </dependency>

import org.apache.commons.lang3.StringUtils;

String text = "  안녕  하세요  ";

// 앞뒤 공백 제거
String trimmed = StringUtils.trim(text);

// 모든 공백 제거
String noSpaces = StringUtils.deleteWhitespace(text);

// 공백 체크
boolean isEmpty = StringUtils.isBlank(text);

실용 예제

사용자 입력 정리:

public String cleanUserInput(String input) {
    if (input == null) {
        return "";
    }
    // 앞뒤 공백 제거 및 여러 공백을 하나로
    return input.trim().replaceAll("\\s+", " ");
}

공백 체크:

public boolean isEmptyOrWhitespace(String text) {
    return text == null || text.trim().isEmpty();
}

// 또는
public boolean isBlank(String text) {
    return text == null || text.trim().length() == 0;
}

자주 묻는 질문 (FAQ)

Q: trim()과 replaceAll()의 차이는?

A: trim()은 앞뒤 공백만 제거하고, replaceAll()은 정규식을 사용하여 모든 위치의 공백을 제거하거나 변환할 수 있습니다.

Q: 전각 공백을 제거하려면?

A: replaceAll("\\u3000", "")또는 replaceAll("[\\s\\u3000]", "")를 사용하세요.