프로그래밍/Java
[java] byte 단위로 문자열 잘라내기
galad
2010. 8. 6. 13:12
/** * byte 단위로 substring * @param str * @param beginIndex 0부터 시작 * @param endIndex substr할 바이트 수. 2-byte문자의 경우 바이트가 부족하면 그 앞 글자까지만 자름. * @param bytesForDB 2-byte문자(한글 등)의 DB에서의 바이트 수. 예를들어 오라클/UTF-8이면 3바이트임 * @return */ public static String substrb(String str, int beginIndex, int endIndex, int bytesForDB) { if(str == null) return ""; String tmp = str; int slen = 0, blen = 0; char c; if(tmp.getBytes().length > endIndex - 1) { // 0부터 카운트 되므로 endIndex - 1 while(blen + 1 < endIndex - 1) { c = tmp.charAt(slen); blen++; slen++; if(c > 127) blen = blen + (bytesForDB - 1); //2-byte character.. } tmp = tmp.substring(beginIndex, slen); } return tmp; } |
public void testStringUtil() { String str = "한글테스트"; int bytesForDB = 3; System.out.println(StringUtil.substrb(str, 0, 9, bytesForDB)); System.out.println(StringUtil.substrb(str, 0, 8, bytesForDB)); } |