메서드 (Method)
정의
문자열을 깔끔하게불필요한 공백 문자열을 정리하거나 정규화할 때 사용하는 함수입니다.
공백 문자에는 스페이스, 탭, 개행 문자가 있습니다.
사용법
JavaScript💡 원본 문자열을 변경하지 않고, 새로운 문자열을 반환합니다.
String exampleString = " Example "; // 예시
String result = exampleString.trim(); // 변환 코드
System.out.println(exampleString); // 출력 : " Example "
System.out.println(result); // 출력 : "Example"
💡 양 끝 공백만 제거합니다.
String exampleString = " Example "; // 양끝 공백 예시
System.out.println("'" + exampleString.trim() + "'"); // 출력 : "Example"
String example = "Example Test"; // 중간 공백 예시
System.out.println("'" + example.trim() + "'"); // 출력 : "Example Test"
💡 공백만 있는 경우 공백을 없애고, 공백이 없는 경우 그대로 출력합니다.
String example = " ";
System.out.println("'" + example.trim() + "'"); // ''
String example = "Example";
System.out.println("'" + example.trim() + "'"); // 'Example'
Why ?
trim( )
💡 사용자의 입력을 정규화시키고, 데이터를 정규화 시킵니다.
// 명령어, 양식이 있는 값의 경우 입력을 정규화시켜 예외를 제거할 수 있습니다.
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine().trim();
💡 다양한 데이터가 포함된 로그 데이터의 가독성을 높힙니다.
trim( )은 원본 문자열을 변경하지 않고, 공백을 제거한 새로운 문자열을 출력합니다.
💡 새로운 변수에 저장하거나 원본 변수에 재할당해서 사용해야 합니다.
public class TrimExample {
public static void main(String[] args) {
String original = " Original String "; // 원본 문자열
String trimmed = original.trim(); // 공백을 제거한 새로운 문자열
// original.trim(); // 변수에 할당하지 않으면 바로 사라집니다.
// 원본 문자열과 새로운 문자열 출력
System.out.println("원본 문자열: '" + original + "'");
System.out.println("Trim 후 새로운 문자열: '" + trimmed + "'");
}
}
💡 trim( )은 strip( )과 다르게 유니코드 공백을 제거할 수 없습니다.
String example = "\u2000strip Example\u2000";
System.out.println(example.trim()); // 유니코드 공백이 제거되지 않음
System.out.println(example.strip()); // 유니코드 공백이 제거됨
[Java] String.trim() - 문자열 전후 공백 제거 및 정규화
데이터를 처리하다 보면 의도치 않게 문자열 앞뒤에 포함된 공백 때문에 로직이 꼬이는 경우가 많습니다. Java의 trim() 메서드는 이러한 불필요한 공백을 제거하여 데이터를 정규화(Normalization)하는 데 사용되는 가장 기초적이면서도 필수적인 메서드입니다.
1. trim()의 정의와 동작 원리
ASCII 제어 문자와 공백을 제거합니다.trim() 메서드는 대상 문자열의 앞뒤(Leading & Trailing)에 존재하는 U+0020(스페이스) 이하의 제어 문자(탭, 개행 등)를 모두 제거합니다.
- Immutable (불변성): 원본 문자열을 직접 수정하지 않고, 공백이 제거된 새로운 문자열 객체를 생성하여 반환합니다.
- 범위: 문자열 '내부'의 공백은 건드리지 않으며, 오직 '양 끝'의 공백만 처리합니다.
2. 실무 활용 및 코드 예제
데이터 정규화의 핵심 예시💡 원본 문자열 유지 확인 (재할당 필요)
String original = " Java Core ";
original.trim(); // 결과를 할당하지 않으면 아무 일도 일어나지 않음
System.out.println("Result: '" + original + "'"); // " Java Core "
String result = original.trim(); // 새로운 변수에 할당
System.out.println("Result: '" + result + "'"); // "Java Core"
💡 사용자 입력값 예외 방지
// 사용자가 실수로 넣은 공백 때문에 로그인이 실패하는 것을 방지합니다.
Scanner sc = new Scanner(System.in);
String userId = sc.nextLine().trim(); // " admin" -> "admin"
3. 심화: trim()과 strip()의 결정적 차이
유니코드 공백 처리 여부Java 11부터 추가된 strip()은 trim()의 상위 호환 버전입니다. 가장 큰 차이는 유니코드 공백(Unicode WhiteSpace)을 인식하느냐에 있습니다.
| 메서드 | 특징 | 지원 버전 |
| trim() | ASCII(U+0020 이하) 공백만 제거 | JDK 1.0~ |
| strip() | 유니코드 상의 모든 공백 문자 제거 (권장) | JDK 11~ |
전주 예시 (유니코드 스페이스 \u2000):
- trim(): 제거 못함
- strip(): 완벽히 제거
🎓 개발 포인트
단순한 문자열 작업에는 trim()으로도 충분하지만, 전 세계의 다양한 공백 문자를 처리해야 하는 글로벌 서비스라면 Java 11 이상의 strip() 사용을 적극 권장합니다. 무엇보다 String은 불변 객체라는 점을 기억하여, 반드시 리턴값을 변수에 재할당하는 습관을 들입시다.