spring-core.jar org.springframework.util 패키지 아래에 개발에 도움이 되는 여러 클래스들이 있다.
StringUtils라는 추상클래스가 있는데 이 클래스는 String을 다루는데 편리한 기능들이 몇 개 있다.
위의 url로 들어가서 실제로 기능을 확인해 보면 사용방법과 설명, 예제가 있다.
보통 개발하다가 만들어야할 공통함수가 있으니 찾아보고 사용하면 유용할 것 같다.
예시는 한글로 잘 정리해둔 포스팅을 가지고와서 적어 두었다.(참고 : https://amagrammer91.tistory.com/37)
hasLength
hasLength 메서드는 자료형으로 char 나 String을 받을 수 있게 오버로딩 되어있는데 단순히 파라미터가 null 이거나 "" 비어있는 문자 일경우 false를 반환하고 나머지 경우는 true를 반환한다. 공백만 있을 경우에는 true를 반환한다.
@Test
@DisplayName("hasLength 테스트")
void hasLengthTest() throws Exception{
assertThat(StringUtils.hasLength(null)).isFalse();
assertThat(StringUtils.hasLength("")).isFalse();
assertThat(StringUtils.hasLength(" ")).isTrue();
assertThat(StringUtils.hasLength("Hello")).isTrue();
}
hasText
hasText는 파라미터가 문자열인지 확인해서 true 또는 false를 반환하는 메서드이다.
@Test
@DisplayName("hasText 테스트")
void hasTextTest() throws Exception{
assertThat(StringUtils.hasText(null)).isFalse();
assertThat(StringUtils.hasText("")).isFalse();
assertThat(StringUtils.hasText(" ")).isFalse();
assertThat(StringUtils.hasText("12345")).isTrue();
assertThat(StringUtils.hasText(" 12345 ")).isTrue();
}
containsWhitespace
파라미터로 들어오는 문자열 중에 공백이 있는지 확인하는 메서드 있으면 true 없으면 false이다.
@Test
@DisplayName("containsWhitespace 테스트")
void containsWhitespaceTest() throws Exception{
assertThat(StringUtils.containsWhitespace(" ")).isTrue();
assertThat(StringUtils.containsWhitespace("")).isFalse();
assertThat(StringUtils.containsWhitespace("123456")).isFalse();
assertThat(StringUtils.containsWhitespace("123 456")).isTrue();
}
trimWhitespace
문자의 앞 뒤에 공백을 제거한다.
@Test
@DisplayName("trimWhitespace 테스트")
void trimWhitespaceTest() throws Exception{
assertThat(StringUtils.trimWhitespace(" 1234")).isEqualTo("1234");
assertThat(StringUtils.trimWhitespace(" 1234안녕 ")).isEqualTo("1234안녕");
assertThat(StringUtils.trimWhitespace(" 1234안녕 하세요")).isEqualTo("1234안녕 하세요");
}
trimAllWhitespace
문자열의 전체 공백을 제거한다. 위의 trimWhitespace 같은 경우는 문자열 중간에 공백이 들어가 있으면 그 공백은 없어지지 않지만 이 메서드를 사용하면 공백 모두를 제거한다.
@Test
@DisplayName("trimAllWhitespace 테스트")
void trimAllWhitespaceTest() throws Exception{
assertThat(StringUtils.trimAllWhitespace(" 1234 ")).isEqualTo("1234");
assertThat(StringUtils.trimAllWhitespace(" 1234안녕 하세요 ")).isEqualTo("1234안녕하세요");
}
trimLeadingCharacter
제공된 문자열에서 제공된 선행 문자의 모든 발생을 제거합니다.
예제에서 선행문자인 '-'를 제거한다.
@Test
@DisplayName("trimLeadingCharacter 테스트")
void trimLeadingCharacterTest() throws Exception{
assertThat(StringUtils.trimLeadingCharacter("-01012345678", '-')).isEqualTo("01012345678");
}
trimTrailingCharacter
제공된 문자열에서 제공된 후행 문자의 모든 발생을 제거합니다.
예제에서 후행문자인 '-'를 제거한다.
@Test
@DisplayName("trimTrailingCharacter 테스트")
void trimTrailingCharacterTest() throws Exception{
assertThat(StringUtils.trimTrailingCharacter("01012345678-", '-')).isEqualTo("01012345678");
}
startsWithIgnoreCaseTest
주어진 문자열이 지정된 접두사로 끝나는지 테스트하고 대문자 / 소문자를 무시합니다.
두 번째로 오는 문자열이 접두사인데 첫 번째로 오는 문자열중에 대소문자를 무시하고 문자열이 맞는지 확인하는 메서드
(번역기 돌리고 했더니 좀 말이 어렵다;;)
@Test
@DisplayName("startsWithIgnoreCase 테스트")
void startsWithIgnoreCaseTest() throws Exception{
assertThat(StringUtils.startsWithIgnoreCase("Hello, How are you", "HELLO")).isTrue();
assertThat(StringUtils.startsWithIgnoreCase("Hello, How are you", "YOU")).isFalse();
}
endsWithIgnoreCaseTest
주어진 문자열이 지정된 접미사로 끝나는지 테스트하고 대문자 / 소문자를 무시합니다.
이건 startsWithIgnoreCaseTest랑 똑같은데 접두사냐 접미사의 차이이다.
@Test
@DisplayName("startsWithIgnoreCase 테스트")
void startsWithIgnoreCaseTest() throws Exception{
assertThat(StringUtils.startsWithIgnoreCase("Hello, How are you", "HELLO")).isTrue();
assertThat(StringUtils.startsWithIgnoreCase("Hello, How are you", "YOU")).isFalse();
}
countOccurrencesOf
주어진 문자열에서 해당 문자열이 얼마나 나오는지 확인할 수 있다.
개수로 리턴된다.
@Test
@DisplayName("countOccurrencesOf 테스트")
void countOccurrencesOf() throws Exception{
String str = "Hello, How are you? Fine Thank you h";
assertThat(StringUtils.countOccurrencesOf(str, "H")).isEqualTo(2);
assertThat(StringUtils.countOccurrencesOf(str, ",")).isEqualTo(1);
assertThat(StringUtils.countOccurrencesOf(str, "y")).isEqualTo(2);
}
실제로 SpringUtils에 이렇게 쓰여있다.
//---------------------------------------------------------------------
// Convenience methods for working with formatted Strings
//---------------------------------------------------------------------
getFilename
파일 경로에서 경로를 제외한 파일의 이름만 가져온다.
@Test
@DisplayName("getFilename 테스트")
void getFilenameTest() throws Exception{
assertThat(StringUtils.getFilename("mypath/myfile.txt")).isEqualTo("myfile.txt");
}
getFilenameExtension
파일의 확장자명만 가져온다.
@Test
@DisplayName("getFilenameExtension 테스트")
void getFilenameExtensionTest() throws Exception{
assertThat(StringUtils.getFilenameExtension("mypath/myfile.txt")).isEqualTo("txt");
}
stripFilenameExtension
파일 경로의 확장자명만 빼고 경로를 문자열로 가져온다.
@Test
@DisplayName("stripFilenameExtension 테스트")
void stripFilenameExtensionTest() throws Exception{
assertThat(StringUtils.stripFilenameExtension("mypath/myfile.txt")).isEqualTo("mypath/myfile");
}
참고
'Java' 카테고리의 다른 글
[Java] File Class - 특정 디렉토리 파일 목록 가져오기 (list/listFiles) (0) | 2022.07.15 |
---|---|
[Java] File Class를 이용한 파일 생성 (0) | 2022.07.15 |
[Java] for문 List의 Null 체크 (0) | 2022.07.12 |
[Java] 로그인 인증방식은 어떤것이 좋을까? JWT(Json Web Token)발행 및 확인 vs Session (0) | 2022.07.11 |
Apache Tomcat 최신 버전 업데이트 방법 (0) | 2022.06.23 |