본문 바로가기

IT/iOS

tip UITextField 언어별 길이 알아내기

UITextField로 text를 입력 받고 나서 언어별 (한글, 영어)로 처리를 다르게 하고 싶을때

 

입력 받은 text값에대한 언어가 무엇인지 판을해야 한다

공식적으로? 는 지원 하지 않지만 

 

약간의 꼼수로 확인할 수 있는 방법이 있다

 

cStringUsingEncoding을 이용하는방법이다

이방법은 원래 server와 통신할시 한글이 포함된 string값을 받거나 줄때 한글 그대로 주게 되면 깨지는 현상을 방지하기 위해 인코딩을 하는 방법이다.

 

UTF8StringEndoding을 이용하여 UTF-8로 인코딩 하면 한글이 포함된 문자는 특정한 길이가 생기는데 그걸 비교하면 된다.

 

사용법은 다음과 같다

 


NSString * text = @"abcd1234한글";
constchar* tmp = [text cStringUsingEncoding:NSUTF8StringEncoding];
if (text.length != strlen(tmp)) {
    // 한글이 포함되어있다.
} else {
    // 한글이 포함되어있지 않다.
}


 

참~~ 쉽죠잉?

 

미완성의 이유는 한글 글씨만 있는지와 섞여있을시를 판단하기가 아직까진 힘들다.

조금더 연구해봐야겠다.

 

++++++++++++++++++++++++++++++++++

더좋은방법을 발견했다. 

 

Text값을 ByteCode로 Encoding하여 전체 length를 구하는것이다.

 

예를들어 한글을 input하면 한글로Encoding후 그 전체 length를 byteCode로 변환하는 방법이다. 

그랬을때 한글 "가나다라마바"를 입력하고 위의 방법으로 length값을 출력하면 12길이가 나오게 되고

영문으로 "abcdefghijkl"의 12문자를 입력하고 동일한 방법으로 length값을 출력하면 12길이가 나오게된다 

 

한마디로 if문 따위는 쓰지 않아도 된다는 말씀.