티스토리 뷰
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
아예 위키에 항목이 있을 정도로 다양한 공백이 존재한다.
이 공백의 다양성에서 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
반응형
'Java+Spring > Java' 카테고리의 다른 글
[Java]동시성(Concurrency) vs. 병렬성(Parallelism) (2) | 2022.10.19 |
---|---|
[Java]스트림에서 개수, 합계, 평균, 최대, 최소를 한 번에! summarizingInt() (4) | 2022.10.13 |
[Java]Printf()로 출력하기 (0) | 2022.10.11 |
[Java]스트림으로 소수 찾기 (2) | 2022.10.10 |
[Java]무한히 큰 숫자 다루기, BigInteger (2) | 2022.10.09 |
[Java]스트림으로 이중 반복문 돌기, 구구단 출력 (2) | 2022.10.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 알고리즘
- 면접 준비
- Backjoon
- 중남미
- 자바
- 맛집
- 지지
- 리스트
- spring
- 스프링
- 세모
- 파이썬
- 유럽
- 스트림
- 기술면접
- 백준
- 남미
- java
- 세계일주
- 세계여행
- 야경
- a6000
- Python
- 유럽여행
- BOJ
- RX100M5
- Algorithm
- 여행
- 칼이사
- 동적계획법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함