StringUtils 란?
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html
우선 공식 문서부터 보고 가겠습니다. 사실 가장 잘 설명된 곳입니다.
StringUtils 클래스는 Apache Commons Lang 라이브러리에서 제공하는 유틸리티 클래스 중 하나입니다.
이 클래스는 문자열 조작을 위한 다양한 메서드를 제공하여 Java 프로그래밍을 보다 편리하게 만들어줍니다.
간단하게 StringUtils 클래스의 몇 가지 주요 기능에 대해 설명하겠습니다.
- 문자열 조작 : 문자열 자르기, 합치기(결합), 검색, 대소문자 변환 등과 같은 문자열 조작을 위한 메서드를 제공합니다. 예를 들어, StringUtils.substring() 메서드는 문자열의 일부를 추출하고, StringUtils.join() 메서드는 여러 문자열을 결합합니다.
- 공백 처리 : 문자열의 앞뒤 공백을 제거하거나, 여러 개의 공백을 단일 공백으로 변환하는 등의 공백 처리를 위한 메서드를 제공합니다. 예를 들어, StringUtils.trim() 메서드는 문자열의 앞 뒤 공백을 제거합니다.
- 문자열 검사 : 문자열이 비어 있는지, 공백인지, 숫자로 이루어져 있는지 등을 확인하는 메서드를 제공합니다. 예를 들어, StringUtils.isEmpty() 메서드는 문자열이 비어 있는지 확인합니다.
(우리가 지금 이 블로그를 보고 있는 이유 중 하나이다.) - 문자열 치환 : 문자열 내에서 특정 패턴을 찾아 다른 문자열로 치환하는 메서드를 제공합니다. 예를 들어, StringUtils.replace() 메서드는 문자열 내에서 특정 문자열을 다른 문자열로 바꿉니다.
이렇게 문자열 조작, 공백 처리, 문자열 검사, 문자열 치환 등 여러 가지 상황에 맞게 다양한 메서드를 제공해 주는 StringUtils는 현업에서도 자주 사용합니다.
isBlank vs isEmpty
이름만 들어서는 둘다 문자열이 비어있는지 확인(검사)하는 메서드입니다. 그러나 그 속을 열어보면 아주 큰 차이가 납니다.
먼저 `isBlank` 부터 까보겠습니다.
public static boolean isBlank(CharSequence cs) {
int strLen = length(cs);
if (strLen == 0) {
return true;
} else {
for(int i = 0; i < strLen; ++i) {
if (!Character.isWhitespace(cs.charAt(i))) {
return false;
}
}
return true;
}
}
`isBlank`는 문자열의 길이뿐만 아니라 주어진 문자열이 공백으로만 이루어져 있지 확인하는 데 사용합니다.
다음은 `isEmpty`입니다.
public static boolean isEmpty(CharSequence cs) {
return cs == null || cs.length() == 0;
}
`isEmpty`는 주어진 문자열의 길이를 가지고 문자열이 비어 있는지 확인을 합니다.
보시다시피 isBlank()는 isEmpty()에 비해 좀 더 포괄적인 개념으로 문자열이 비어있는지 확인합니다.
예시를 통해 더 확실히 알아보고 글을 마치겠습니다.
다음은 공식 문서에 나와있는 예시입니다.
isBlank
// true : 비어있음
// false : 비어있지 않음
StringUtils.isBlank(null) // true
StringUtils.isBlank("") // true
StringUtils.isBlank(" ") // true
StringUtils.isBlank("bob") // false
StringUtils.isBlank(" bob ") // false
isEmpty
// true : 비어있음
// false : 비어있지 않음
StringUtils.isEmpty(null) // true
StringUtils.isEmpty("") // true
StringUtils.isEmpty(" ") // false
StringUtils.isEmpty("bob") // false
StringUtils.isEmpty(" bob ") // false
회원가입 예제
gradle
implementation 'org.apache.commons:commons-lang3:3.12.0'
maven
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
버전은 자신에게 맞게 수정해서 사용하세요.
import org.apache.commons.lang3.StringUtils;
import 문구도 같이 넣어드립니다.
@Override
public MemberDto signUp(SignUpDto signUpDto) {
Member member = memberRepository.findByUsername(signUpDto.getUsername()).orElse(null);
if (StringUtils.isBlank(signUpDto.getUsername())) {
throw new IllegalArgumentException("사용자 이름을 입력해주세요.");
} else if (StringUtils.isBlank(signUpDto.getPassword())) {
throw new IllegalArgumentException("비밀번호를 입력해주세요.");
} else if (StringUtils.isBlank(signUpDto.getNickname())) {
throw new IllegalArgumentException("닉네임을 입력해주세요.");
} else if (member != null) {
throw new IllegalArgumentException("이미 사용 중인 사용자 이름입니다.");
}
String encodedPassword = passwordEncoder.encode(signUpDto.getPassword());
Set<Authority> authorities = new HashSet<>();
authorities.add(Authority.builder().authorityName("ROLE_USER").build());
return MemberDto.of(memberRepository.save(signUpDto.toEntity(encodedPassword, authorities)));
}
끝.
'Java' 카테고리의 다른 글
[Java; 자바] 빌드 도구 면접 완벽 대비 블로그 (0) | 2024.10.24 |
---|---|
[Java; 자바] Java 오버로딩과 오버라이딩: 개념, 차이점, 그리고 스프링부트 활용 예제 (0) | 2024.09.23 |
[Java; 자바] 초보자를 위한 자바 프로그래밍 기초 안내 - 03 (0) | 2023.12.05 |
[Java; 자바] 초보자를 위한 자바 프로그래밍 기초 안내 - 02 (0) | 2023.12.05 |
[Java; 자바] 초보자를 위한 자바 프로그래밍 기초 안내 - 01 (0) | 2023.12.04 |