한글 인코딩 관련 유틸 수정
parent
a9ef449a34
commit
54ac3a167e
@ -0,0 +1,140 @@
|
|||||||
|
package cokr.xit.fims.cmmn;
|
||||||
|
|
||||||
|
public class Hangul {
|
||||||
|
|
||||||
|
public Hangul(int hangulIsNByte){
|
||||||
|
this.hangulIsNByte = hangulIsNByte;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int hangulIsNByte;
|
||||||
|
|
||||||
|
public int is() {
|
||||||
|
return this.hangulIsNByte;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 문자열의 바이트 수 구하기
|
||||||
|
*
|
||||||
|
* @param str
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int getByteLength(String str) {
|
||||||
|
|
||||||
|
int byteLen = 0;
|
||||||
|
|
||||||
|
for(int i=0;i<str.length();i++) {
|
||||||
|
char ch = str.charAt(i);
|
||||||
|
|
||||||
|
if((ch > 127) || (ch < 0)) {
|
||||||
|
byteLen += this.is();
|
||||||
|
} else {
|
||||||
|
byteLen += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return byteLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 문자열을 바이트 단위로 패딩
|
||||||
|
*
|
||||||
|
* @param str
|
||||||
|
* @param byteLen
|
||||||
|
* @param ch
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String rpadByte(String str, int byteLen, String ch) {
|
||||||
|
String result = str;
|
||||||
|
|
||||||
|
int strLen = this.getByteLength(str);
|
||||||
|
|
||||||
|
for(int i=0; i < byteLen - strLen ; i++) {
|
||||||
|
result += ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 문자열을 바이트 단위로 substring하기
|
||||||
|
*
|
||||||
|
* @param str
|
||||||
|
* @param beginBytes
|
||||||
|
* @param endBytes
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String substringByBytes(String str, int beginBytes, int endBytes) {
|
||||||
|
if (str == null || str.length() == 0) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (beginBytes < 0) {
|
||||||
|
beginBytes = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (endBytes < 1) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
int len = str.length();
|
||||||
|
|
||||||
|
int beginIndex = -1;
|
||||||
|
int endIndex = 0;
|
||||||
|
|
||||||
|
int curBytes = 0;
|
||||||
|
String ch = null;
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
ch = str.substring(i, i + 1);
|
||||||
|
curBytes += this.getByteLength(ch);
|
||||||
|
|
||||||
|
|
||||||
|
if (beginIndex == -1 && curBytes >= beginBytes) {
|
||||||
|
beginIndex = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (curBytes > endBytes) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
endIndex = i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return str.substring(beginIndex, endIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 문자열을 바이트 단위로 substring하기
|
||||||
|
*
|
||||||
|
* @param str
|
||||||
|
* @param beginBytes
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String substringByBytes(String str, int beginBytes) {
|
||||||
|
if (str == null || str.length() == 0) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (beginBytes < 0) {
|
||||||
|
beginBytes = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int len = str.length();
|
||||||
|
|
||||||
|
int beginIndex = -1;
|
||||||
|
|
||||||
|
int curBytes = 0;
|
||||||
|
String ch = null;
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
ch = str.substring(i, i + 1);
|
||||||
|
curBytes += this.getByteLength(ch);
|
||||||
|
|
||||||
|
|
||||||
|
if (beginIndex == -1 && curBytes >= beginBytes) {
|
||||||
|
beginIndex = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return str.substring(beginIndex);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue