language/java
Java 문자열 바이트 체크 / 문자열 길이 체크 / string byte check
CofS
2016. 11. 11. 11:15
특정 문자열의 크기를 체크할 경우가 있다.
문자열에는 공백, 한글, 영문, 숫자, 특수문자 등 여러 문자들의 집합니다.
아래 함수는 문자열과 기준 바이트를 파라미터로 입력받고
문자열의 바이트수가 기준 바이트보다 크면 false, 작거나 같으면 true를 리턴한다.
리턴타입을 boolean 이 아닌 int 로 바꿔서 입력받은 문자열의 byte를 리턴하는 등 여러가지로 변형해서 사용할 수 있다.
문자열의 바이트를 계산하는 방법은
크게 영문, 한글, 특수문자(숫자, 공백 포함) 을 각각 영문1byte, 한글2byte, 특수문자1byte 로 구분해서
총 문자열의 byte 를 계산하는 소스이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 |
/**
* 바이트를 체크한다. 기준보다 크면 false, 작거나 같으면 true
*
* @param txt 체크할 text
* @param standardByte 기준 바이트 수
* @return
*/
public boolean byteCheck(String txt, int standardByte) {
if (TsUtil.empty(txt)) { return true; }
// 바이트 체크 (영문 1, 한글 2, 특문 1)
int en = 0;
int ko = 0;
int etc = 0;
char[] txtChar = txt.toCharArray();
for (int j = 0; j < txtChar.length; j++) {
if (txtChar[j] >= 'A' && txtChar[j] <= 'z') {
en++;
} else if (txtChar[j] >= '\uAC00' && txtChar[j] <= '\uD7A3') {
ko++;
ko++;
} else {
etc++;
}
}
int txtByte = en + ko + etc;
if (txtByte > standardByte) {
return false;
} else {
return true;
}
} |
cs |
16# : 입력받은 문자열을 케릭터 타입(char) 배열로 받는다.
17# : 케릭터 타입 배열을 한글자씩 루프를 돈다.
18# : 영문인지 체크해서 영문일 경우 en변수 1증가
20# : 한글인지 체크해서 한글일 경우 ko변수 2증가
23# : 그 이외는 특수문자(숫자, 공백 포함) 로 판단하고 1 증가
28# : 총 크기를 합산한다.