로그파일에서 로그를 파싱하려고 정규표현식으로 파싱하는데 매치 부분에서 매치가 되지 않는걸
한참을 찾아보다 문자열 마지막에 커서를 맨앞으로 보내는 개행 (\r) 문이 들어가는걸 발견했다
테스트 케이스에서는 문자를 직접 작성하다보니 문제가 없었는데
실제 서버에서 로그파일이 찍힐때는 해당 개행이 들어가는 것이였다
개발을 할때 최종 데이터를 반환하고 그걸 찍어보고 확인해보는 작업도 필요하단걸 느꼈다
이를 해결하는 방법을 찾아보다 trim()과 strip() 차이가 궁금해서 작성해본다
1. trim() vs strip()
- trim() : 문자열에 양변에 있는 공백을 제거한 결과값을 반환
- strip() 은 JDK11에서 부터 지원하는 양변에 공백 + 유니코드 전반의 whitespace 문자까지 제거 가능
2. 예제
public class StringTrimStripExample {
public static void main(String[] args) {
// 양변에 있는 공백문자 삭제
// 아스키코드에 대해서는 모두 다 작동 잘함
String str1 = " \t\t\n\rhello \t\t\n\r";
System.out.println("Before: \"" + str1 + "\"");
System.out.println("After trim: \"" + str1.trim() + "\"");
System.out.println("After strip: \"" + str1.strip() + "\"");
System.out.println();
// 유니코드에 대해서는 trim() 작동하지 않음
// 유니코드에 대해서는 strip()만 작동 (JDK11+)
String str2 = '\u2001' + "String with space" + '\u2001';
System.out.println("Before: \"" + str2 + "\"");
System.out.println("After trim: \"" + str2.trim() + "\"");
System.out.println("After strip: \"" + str2.strip() + "\"");
}
}
3. 결과
Before: "
hello
"
After trim: "hello"
After strip: "hello"
Before: " String with space "
After trim: " String with space "
After strip: "String with space"
<콘솔창>

'Java' 카테고리의 다른 글
| [Java] 초기화 블럭(initialization block) (0) | 2024.10.02 |
|---|---|
| [Java] 코드스멜 (Code Smell) (0) | 2024.09.10 |
| [Java] Javadoc 이란? (0) | 2024.08.07 |
| [Java] java.nio 활용 FileTracker 구현 3 (리팩토링) (0) | 2024.02.21 |
| [Java] java.nio 활용 FileTracker 구현 2 (복수 파일 처리) (1) | 2024.02.19 |