개발/JAVA, Spring
[JAVA] 한글이 포함된 문자열 자르기
똘똘이박사
2021. 5. 13. 12:35
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 "";
}
}
반응형