개발/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 "";
    }
}

 

반응형