프로그래밍/안드로이드

[안드로이드] String 문자열 공백 제거 및 언어 구분

쿠샨 2010. 12. 17. 12:27
작업 도중 String 문자열에 대한 공백 , 특수 문자, 숫자 제거 후 해당 String을 한 글자 씩 String 배열에 넣는 기능 테스트를 하게 되었습니다.

작업 테스트에 대한 플로우차트는 다음과 같습니다..(클릭해서 큰 화면으로 보시길..)

기능 하나 하나 설명을 하자면

먼저 EditText의 입력 값을 받아 오는 방법은

EditText.getText() 메쏘드를 사용 합니다.
     ex) String input_string = input_editText.getText().toString();

문자열의 공백, 특수 문자, 숫자를 제거 하는 방법은

String.replaceAll() 메쏘드를 사용 합니다.
     ex) str = str.replaceAll("\\p{Digit}|\\p{Space}|\\p{Punct}", "");

여기서 replaceAll 함수 안의 매계변수는 String 형 정규식이 들어갑니다.
\\p{Digit} 는 숫자 제거 \\p{Space} 는 공백 제거 \\p{Punct}는 특수 기호 제거!!!
자바(안드로이드) 정규식 패턴에 대해 잘 모르시는 분들은 Class Pattern (링크) 메뉴얼을 참고 하시기를 바랍니다 .

필요 없는 문자도 제거 했고, 이제 입력한 문자열이 한글인지, 영문인지..아니면 섞여 있는지 확인 하는 방법은
영문은 한글자당 1바이트, 한글은 한글자당 3바이트 이므로

문자열의 길이와 문자열의 바이트 길이가 같다면 영문!!
문자열의 바이트 길이가 문자열 길이의 3배라면 한글!!

   ex) if(str.getBytes().length == str.length()){
               return LANGUAGE_ENGLISH;
         }else if(str.getBytes().length == BYTE_OF_KOREAN * str.length()){
               // BYTE_OF_KOREAN == 3
               return LANGUAGE_KOREAN;
         }else{
               return LANGUAGE_MIXED;
         }

마지막으로 문자열이 영문일 경우 대문자로 치환 하는 방법!!
String.toUpperCase() 메쏘드를 사용 하면 되고, 반대로 소문자로 치환 할때는 String.toLowerCase() 메쏘드를 사용 하시면 됩니다.
   ex) String temp_string = str.toUpperCase().toString();