Gooday Note Scrap Source Android login
 
작성일 : 12-06-28 10:59
문자열 공백제거 및 언어 구분 [한글 영문 검사/확인]
 글쓴이 : 기리
조회 : 10,639   추천 : 0   비추천 : 0  
   http://sagk.egloos.com/2878778 [2451]
   http://sunmo.blogspot.kr/2010/12/java-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9… [1973]
출처 - http://goosl.tistory.com/14
[ 제 개인용도로 사용하기 위해서 퍼온 자료입니다. 그외 의도는 전혀 없습니다. ]

작업 도중 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();


========================================================================================================================

[JAVA] 문자열에 한글 체크하기

Character라는 클래스에 getType이라는 메소드가 문자값을 받아

character category값을 리턴해줍니다. 

public static int getType(char ch) 

사용예 : 

String str = "한";

char[] temp = str.toCharArray();

int temp = Character.getType(temp[0]); 

여기서 temp에 값이 5가 저장되면 한글입니다.