728x90
자바에서 문자열 양쪽 공백을 제거하는 방법은 trim와 strip이 있습니다.
StringBuilder, StringBuffer/ split, StringTokenizer 등 같은 동작을 하지만 이름이 같은 도구들이 많은데, trim와 stip도 마찬가지입니다!
이번에 차이점을 확실히 알아두기 위해 블로그에 포스팅합니다.
String.Strip()
String str = " 안녕하세요 ";
String strip = str.strip();
System.out.println("[" + strip + "]");
Strip()은 스트링 값을 받아 양쪽 공백을 제거한 스트링을 반환합니다.
메서드를 타고 들어가서 읽어보면 다음과 같이 설명합니다.
모든 선행 및 후행 white space을 제거하여 값이 이 문자열인 문자열을 반환합니다.
이 String 객체가 빈 문자열을 나타내거나 이 문자열의 모든 코드 포인트가 white space인 경우 빈 문자열이 반환됩니다.
그렇지 않으면 공백이 아닌 첫 번째 코드 포인트부터 white space이 아닌 마지막 코드 포인트까지 포함하여 이 문자열의 subString을 반환합니다.
이 방법은 문자열의 시작과 끝에서 white space을 제거하는 데 사용할 수 있습니다.
반환값: 값이 이 문자열이고 모든 선행 및 후행 공백이 제거된 문자열
Since: 11
더 보기: Character.isWhitespace(int)
읽어봐도 별 건 없고 양쪽 white space를 자른다고 한다
여기서는 white space를 다음과 같이 정의한다
- Unicode의 space 캐릭터: \u00A0, \u2007, \u202F
- \t 탭(가로 TABULATION)
- \n 줄바꿈문자
- \v (\u000B) 세로 TABULATION
- \f form feed
- \r 캐리지리턴
- \u001D 파일 Separator
- \u001D 그룹 Separator
- \u001E Record Separator
- \u001F Unit Separator
- 궁금하신 분들은 참고: https://en.wikipedia.org/wiki/Whitespace_character
String.trim()
String str = " 안녕하세요 ";
String trim = str.trim();
System.out.println("[" + trim + "]");
사용법이 stirp과 아주 유사하다
설명은 다음과 같다
값이 이 문자열이고 모든 선행 및 후행 space가 제거된 문자열을 반환합니다. 여기서 space는 코드 포인트가 'U+0020'(space character)보다 작거나 같은 문자로 정의됩니다.
이 String 객체가 빈 문자 시퀀스를 나타내거나 이 String 객체가 나타내는 문자 시퀀스의 첫 번째와 마지막 문자가 둘 다 (위에 정의된 대로) space가 아닌 코드를 갖는 경우 이 String 객체에 대한 참조가 반환됩니다.
그렇지 않고, 이 문자열의 모든 문자가 (위에 정의된 대로) space이면 빈 문자열을 나타내는 String 객체가 반환됩니다.
그렇지 않은 경우, k를 코드가 space가 아닌 문자열의 첫 번째 문자(위에서 정의한 대로)의 인덱스로 두고 m을 코드가 space가 아닌 문자열의 마지막 문자(위에서 정의한 대로)의 인덱스로 둡니다. 인덱스 k의 문자로 시작하고 인덱스 m의 문자로 끝나는 이 문자열의 하위 문자열, 즉 this.substring(k, m + 1)의 결과를 나타내는 String 객체가 반환됩니다.
이 메서드는 문자열의 시작과 끝에서 (위에 정의된 대로) space를 자르는 데 사용할 수 있습니다.
반환값: 값이 이 문자열이고 모든 선행 및 후행 space가 제거된 문자열이거나, 선행 또는 후행 space가 없는 경우 이 문자열입니다.
strip과 비슷한 맥락으로 이야기하지만, 하나 차이점은 white space가 아닌 space를 제거한다고 설명하고 있다
여기서 space는 codepoint가 'U+0020'보다 작거나 같은 문자라고 한다.
결론
strip()이 trim()보다 제거할 수 있는 공백문자열 범위가 넓다.
하지만 우리가 자주 사용하는 \t, \n, space 에 대해 서는 trim(), strip() 모두 잘 동작한다.
특별한 경우가 아니면 둘 다 써도 상관없는 것 같다!
String str = "\t안녕하세요 \n";
String strip = str.trim();
System.out.println("[" + strip + "]");
728x90
'프로그래밍 언어 > Java' 카테고리의 다른 글
[JAVA] 클래스 내부 속성으로 가지고 있는 객체를 mock으로 설정하는 방법: @InjectMock이 동작하지 않는 이유 (0) | 2023.11.01 |
---|---|
[우테코] 2주차 Test코드 분석 - NsTest, assertj, JUnit (0) | 2023.10.30 |
[JAVA] 단위테스트 공부2: 테코톡 보고 정리 (0) | 2023.10.29 |
[JAVA] 단위테스트 공부1: Mock 알아보기 (1) | 2023.10.29 |
[JAVA] public private 메소드 정렬 순서 결정하는법 (0) | 2023.10.28 |