티스토리 뷰

Spring Framework

[Spring Framework] StringUtils

터프남 2020. 12. 13. 01:10
728x90

spring-core.jar 에 org.springframework.util 패키지 밑에는 개발에 도움이 되는 여러 클래스들이 있다.

spring-core.jar

그 중에 StringUtils라는 추상클래스가 있는데 이 클래스는 String을 다루는데 편리한 기능들이 몇개 있는 것 같아서 정리해본다.

실제로 들어가서 소스를 보면 도움이 많이 될 것 같다.

@Deprecated는 제외

메서드 위에 친절히 어떻게 사용하는지 설명도 되어있고 예제도 있다.

보통 개발하다가 만들어야 될 공통 함수들이 웬만한 것은 정의되어 있는 것 같다.

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");
}

이 외에도 여러가지 있는데 천천히 추가해야겠다.

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함