java 에서 문자열을 자를때 일반적으로 subString 을 사용하는데
알아 두워야 할 점은 subString로는 한글 문자열을 자를 수 없다는 것이다.
정확히는 1바이트만 구성된 문자들(숫자, 영문자 등)의 문자열만 자를 수 있다고 보는게 맞다.
그럼 한글은 어떻게 자르나?
원리는 간단하다.
문자열을 바이트형으로 변환한 뒤 각 글자의 길이를 계산하여 처리하면 되는 것이다.
한글은 2바이트 문자이므로 문자열을 하나하나 반복하다가
해당 문자열이 1바이트 문자인지 2바이트 문자인지 확인 후 잘라 주는 것이다.
이때 주의할 점이라면 자르고자 하는 위치가 2바이트 문자열에 위치해 있다면
1바이트 앞으로 끊어서 읽어주면 된다.
간단한 내용이니 코드를 바로 보자.
private String subStrBytes(String source, int cutLength) {
if(!source.isEmpty()) {
source = source.trim();
if(source.getBytes().length <= cutLength) {
return source;
} else {
StringBuffer sb = new StringBuffer(cutLength);
int cnt = 0;
for(char ch : source.toCharArray()){
cnt += String.valueOf(ch).getBytes().length;
if(cnt > cutLength)
break;
}
return sb.toString();
}
} else {
return "";
}
}
반응형
'개발 > JAVA, Spring' 카테고리의 다른 글
[JAVA] 문자열에서 숫자만 남기고 제거하기 (replaceAll) (0) | 2021.06.16 |
---|---|
[JAVA] 문자열에 특정 문자가 있는지 확인(matches 이용하기) (0) | 2021.06.09 |
Spring Security 적용 후 이유없이 Access Denied 될때 (0) | 2021.01.30 |
No qualifying bean of type '...' available (0) | 2020.12.08 |
[java/spring] Spring profile 사용하기 (0) | 2019.11.27 |