티스토리 뷰

728x90
반응형

각종 알고리즘 문제를 풀거나, 입력 값으로 데이터를 받을 때

 

의도했건 그렇지 않건 문자열 앞 뒤로 공백이 생기고, 생긴 공백을 제거해야 할 때가 있다.

 

trim()은 그때 사용하는 메서드이고, strip()은 자바 11부터 지원하기 시작한 비슷한 메서드이다.

 

둘의 공통점과 차이점을 간단하게 알아보자.

 

공통점

 

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

        String str = "     Hello Gnidinger!     ";

        System.out.printf("원본 문자열: '%s'%n", str);
        System.out.printf("문자열.trim(): '%s'%n", str.trim());
        System.out.printf("문자열.strip(): '%s'%n", str.strip());
        
    }
}
원본 문자열: '     Hello Gnidinger!     '
문자열.trim(): 'Hello Gnidinger!'
문자열.strip(): 'Hello Gnidinger!'

먼저 둘의 공통점은 당연하다면 당연하게도 앞 뒤의 공백을 제거해준다는 것이다.

 

앞뒤로 다섯 칸의 공백이 있는 문자열을 (이름처럼) 깔끔하게 다듬어 준 모습이다.

 

계속해서 차이점을 보자.

 

차이점

 

유니코드에는 우리가 모르는 공백으로 가득하다.

 

스페이스("\u0020"), 탭("\u0009")처럼 자주 쓰는 공백뿐 아니라

 

https://en.wikipedia.org/wiki/Whitespace_character

 

Whitespace character - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Any character in typography representing a blank space "Dot space" redirects here. For the animated film, see Dot in Space. "␣" redirects here. Not to be confused with ⌴. In comput

en.wikipedia.org

아예 위키에 항목이 있을 정도로 다양한 공백이 존재한다.

 

이 공백의 다양성에서 trim()과 strip()의 차이점이 발생하는데, 간단하게 아래와 같다.

 

  • trim() - "\u0020" 이하의 공백만 제거
  • strip() - 모든 유니코드 공백을 제거

또한 strip()에는 trim()에는 없던 옵션이 생겼는데,  코드로 확인하자.

public class TrimStripExample {
    public static void main(String[] args) {
    
        String str = "     Hello Gnidinger!" + "\u2000" + "\u2000" + "\u2000";

        System.out.printf("원본 문자열: '%s'%n", str);
        System.out.printf("문자열.trim(): '%s'%n", str.trim());
        System.out.printf("문자열.strip(): '%s'%n", str.strip());
        System.out.printf("문자열.stripLeading(): '%s'%n", str.stripLeading());
        System.out.printf("문자열.stripTrailing(): '%s'%n", str.stripTrailing());
        
    }
}
원본 문자열: '     Hello Gnidinger!   '
문자열.trim(): 'Hello Gnidinger!   '
문자열.strip(): 'Hello Gnidinger!'
문자열.stripLeading(): 'Hello Gnidinger!   '
문자열.stripTrailing(): '     Hello Gnidinger!'

앞서 말한 대로 trim()은 "\u2000" 공백을 제거하지 못하는 것을 볼 수 있으며,

 

strip은 모든 공백을 제거하며 앞부분이나 뒷부분의 공백만 골라서 제거하는 옵션이 생긴 것을 확인할 수 있다.

 

즉, 훨씬 다양하고 구체적인 공백 제거가 가능해진다는 뜻이다.

 

다른 유니코드로 입력된 공백은 strip() 이전에는 정규식을 이용해 하나씩 걸러냈다고 한다.

 

Summary

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함