특정 문자열의 크기를 체크할 경우가 있다.

 

문자열에는 공백, 한글, 영문, 숫자, 특수문자 등 여러 문자들의 집합니다.

 

아래 함수는 문자열과 기준 바이트를 파라미터로 입력받고

 

문자열의 바이트수가 기준 바이트보다 크면 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# : 총 크기를 합산한다.

 

 

by 개발자 CofS 2016.11.11 11:15