String.trim() vs String.strip()
Java에서 String(문자열)에서 앞 뒤 혹은 Only 앞, Only 뒤의 공백을 제거해야 할 일이 생기기 마련이다..
크게 trim()과 strip() 두 가지 메소드가 존재하는데 두 가지의 차이도 알아볼 겸 예제 코드를 작성해보자..
1. String.trim()
import static org.assertj.core.api.Assertions.assertThat;
public class Length_of_Last_Word {
public static String lengthOfLastWord(String s) {
System.out.println("원래 s : [" + s + "]");
s = s.trim();
System.out.println("앞뒤 공백을 자른 s : [" + s + "]");
return s;
}
public static void main(String[] args) {
assertThat(lengthOfLastWord(" luffy is still joyboy "))
.isEqualTo("luffy is still joyboy");
assertThat(lengthOfLastWord(" fly me to the moon "))
.isEqualTo("fly me to the moon");
}
}
※ 결과
assertj를 활용하여 테스트 코드가 정상적으로 통과하는 지도 같이 한 번 확인해보았다..
input parameter로 받은 앞뒤 공백이 포함된 luffy is still joyboy와 fly me to the moon의 앞뒤 공백이 s.trim()에 의해서 정상적으로 제거된 것을 확인할 수 있다.
2. String.strip()
2-1. String.strip()
import static org.assertj.core.api.Assertions.assertThat;
public class Length_of_Last_Word {
public static String lengthOfLastWord(String s) {
System.out.println("원래 s : [" + s + "]");
s = s.strip();
System.out.println("앞뒤 공백을 자른 s : [" + s + "]");
return s;
}
public static void main(String[] args) {
assertThat(lengthOfLastWord(" luffy is still joyboy "))
.isEqualTo("luffy is still joyboy");
assertThat(lengthOfLastWord(" fly me to the moon "))
.isEqualTo("fly me to the moon");
}
}
※ 결과
java.lang.String.strip()은 Java 11 버전 이후로 새로 추가된 메소드이다. 앞서 trim()과 마찬가지로 문자열의 앞뒤 공백을 모두 제거해준다. strip()은 추가적으로 stripLeading()과 stripTrailing()이 존재한다. 같이 한 번 확인해보자.
2-2. String.stripLeading(), String.stripTrailing()
public class Length_of_Last_Word {
public static void main(String[] args) {
String s = " luffy is still joyboy ";
System.out.println("원래 s : [" + s + "]");
System.out.println("앞 공백을 자른 s : [" + s.stripLeading() + "]");
System.out.println("뒤 공백을 자른 s : [" + s.stripTrailing() + "]");
}
}
※ 결과
String.stripLeading()은 앞의 공백을 제거해주고 String.stripTrailing()은 뒤의 공백을 제거해주기 때문에 필요에 따라 선택적으로 공백을 제거할 수 있다.
trim()과 strip()의 차이점
trim() 메소드는 스페이스('\u0020') 이하의 공백들만 제거한다.
strip() 메소드는 유니코드의 공백들을 모두 제거한다.
유니코드에는 일반적으로 많이 사용하는 스페이스('\u0020'), Tab(`\u0009`) 이외에도 많은 공백 문자들이 존재하고
그 모든 공백문자들을 제거해준다.
결국 strip() 메소드가 trim() 메소드 보다 더 많은 종류의 공백 문자를 제거할 수 있다.
또한 앞서 말한 것과 같이 strip에는 stripLeading(), stripTrailing()이 존재하므로 선택적으로 공백을 제거할 수 있다.
이전에 JAVA8 버전이 프로젝트 점유율을 지배했다면 근래 JAVA11 버전이 프로젝트 점유율을 지배해가고 있는 추세이다.
우리 모두 JAVA11 이상 버전을 사용하도록 하자..
'프로그래밍 > Java' 카테고리의 다른 글
ModelMapper란? (0) | 2023.07.12 |
---|---|
[Java] StringTokenizer에 대해 알아보자~ (0) | 2022.08.09 |
String vs (StringBuffer vs StringBuilder) (0) | 2022.06.07 |
Java로 Client IP 찾는 방법 (0) | 2022.05.23 |
++i vs i++ (0) | 2022.05.18 |
댓글