Java / / 2022. 7. 14. 13:26

[Spring] StringUtils 클래스로 String 다루기

반응형

 

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

StringUtils라는 추상클래스가 있는데 이 클래스는 String을 다루는데 편리한 기능들이 몇 개 있다.

https://amagrammer91.tistory.com/37

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

 

참고

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/StringUtils.html

 

StringUtils (Spring Framework 6.0.4 API)

hasText Check whether the given CharSequence contains actual text. More specifically, this method returns true if the CharSequence is not null, its length is greater than 0, and it contains at least one non-whitespace character. StringUtils.hasText(null) =

docs.spring.io

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유