자바 - 문자열의 원하는 byte만큼 자르기

IT&프로그래밍 2019. 9. 19. 17:25

프로그램 코딩 중 한글이든 영문이든 둘다 섞여 있을 경우 알맞은 size로 문자열을 잘라야 하는경우가 발생한다.

문자열을 바이트(byte)로 변환 후 원하는 사이즈로 자르면 된다.


예시 : 메소드구현부)
//st : 문자열
//cutLeng : 커트 할 길이
public String byteCuter(String st, int cutLeng){
	if(st.toString().getBytes().length > cutLeng){
		StringBuilder stringBuilder = new StringBuilder(cutLeng);
		int nCnt = 0;
		for(char ch:st.toString().toCharArray()){
			nCnt += String.valueOf(ch).getBytes().length;
			if(nCnt > cutLeng) break;
			stringBuilder.append(ch);
		}
		return stringBuilder.toString() + ".."; //나머지부분 ..으로 표기
	}else{
		return st;
	}
}

예시 : 호출부)
byteCuter(targetName.toString(), 100);

*예외(Exception)발생 시 저장하려할때 원하는 길이만큼만 자를땐 StringWriter를 사용하면된다.
예시)
StringWriter stringWriter = new StringWriter(); //StringWriter 인스턴스 생성
e.printStackTrace(new PrintWriter(stringWriter)); //stringWriter에 담기
byteCuter(stringWriter.toString(), 4000); //stringWriter 문자열을 4000까지 자르기

 

자바 버전에 따라 StringBuilder 대신 StringBuffer를 사용해도 된다.