IT/JAVA

java 한글 byte로 깨짐없이 자르기

럽티 2018. 5. 25. 13:15
public String subStringBytes(String str, int byteLength, int sizePerLetter) {
  int retLength = 0;
  int tempSize = 0;
  int asc;
  if (str == null || "".equals(str) || "null".equals(str)) {
    str = "";
  }
 
  int length = str.length();
 
  for (int i = 1; i <= length; i++) {
    asc = (int) str.charAt(i - 1);
    if (asc > 127) {
      if (byteLength >= tempSize + sizePerLetter) {
        tempSize += sizePerLetter;
        retLength++;
      }
    } else {
      if (byteLength > tempSize) {
        tempSize++;
        retLength++;
      }
    }
  }
 
  return str.substring(0, retLength);
}


UTF-8일 경우

subStringBytes("블라블라블라라", 10, 3);

EUC-KR일 경우

subStringBytes("블라블라블라라", 10, 2);



출처: http://www.donnert.net/88 [donnert.net]