/** * 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)); } |
'프로그래밍 > Java' 카테고리의 다른 글
[junit] 멀티스레드 테스트 (0) | 2010.09.27 |
---|---|
[jar] jar 압축하기/해제하기 (0) | 2010.09.10 |
[java] 이미지 리사이즈 (0) | 2010.07.23 |
[java] 소수점 자리수 / 천단위 콤마 (0) | 2010.05.18 |
[java] Convert Milliseconds to Date (0) | 2010.03.15 |