2012-07-21 3 views
1

나는 경보를 설치하고있다. 그러나 나는 다양한 영역에 이름을 붙여야 만한다. 문제는 그들이 영어로만 존재하지 않는 그리스 문자를 받아 들일 수 있다는 것입니다. 그렇지 않으면 영어 동급이어야합니다. 예를 들어 "ΠΑΡΑΘΥΡΟ"라고 쓰면, 문자 1,2,3,5,6,7은 그리스어와 동일하기 때문에 영어로 입력해야합니다. 그러나 문자 0과 4는 그리스어로만 작성되어야합니다. 대문자 만 중요합니다. 2 개의 간단한 jtextfield로 어떻게 할 수 있습니까? 감사합니다.외국 문자 (그리스어)를 영어 문자로 변환합니다.

+2

나는 그것을 얻지 못한다 : 어쨌든 파이와 티타늄을 어떻게 입력 할 것입니까? 그리스 문자를 입력 할 수 없다면 왜 "창"을 입력하지 않습니까? 아니면 "para8yro"와 같은 것을 입력하고 싶습니까? 어느 그리스 문자를 구할 수 있다면, 모든 것을 그리스 문자로 입력해야합니다. 그렇지 않으면, 모든 것을 영어 (또는 "그리스어")로 입력해야합니다. –

+0

그리스 문자 문자를 표시하는 시스템 지원은 물론 영어 알파벳에 존재하지 않습니다. 다른 사람들은 그것을 받아들이지 않습니다. 내가 너를 도왔 으면 좋겠어! 시간 내 주셔서 감사합니다! – Vagelism

+1

오, 노키아 휴대폰처럼. –

답변

3

문자를 번역하려면 HashMap을 사용하십시오. 문제의 도메인이 작고 아마 절대 변하지 않을 것입니다 때문에, 같은 하드 코드로지도의 내용 정당한이다 :

private static final Map<Character, Character> GREEK_TO_ROMAN = new HashMap<>(); 
static { 
    GREEK_TO_ROMAN.put('\u0391', '\u0041'); // uppercase alpha 
    GREEK_TO_ROMAN.put('\u03A1', '\u0050'); // uppercase rho 
    // ... 
} 

그런 다음, 입력 문자열의 문자 배열을 얻을 필요에 따라 문자를 번역하고,을 만들 변경된 배열에서 새로운 문자열 :

String s = "ΠΑΡΑΘΥΡΟ"; 
char[] chars = s.toCharArray(); 
for (int i = 0; i < chars.length; i++) { 
    Character repl = GREEK_TO_ROMAN.get(chars[i]); 
    if (repl != null) 
     chars[i] = repl; 
    } 
s = new String(chars); 
JTextField를하지만 당신은 당신이 그것을 서브 클래스 getText() 방법을 덮어 쓰기가 얻을 수있는 문자열이 있는지 확인 할 수 있습니다 원하는 아마도 경우, 나는 확실히 보이지 않는 플레이에 와서 어떻게

이미 개종했습니다.

+0

감사합니다. 어디에서 그 코드를 찾을 수 있습니까? 내가 신경 쓰는 두 알파벳의 \ u0391 등 ...? – Vagelism

+1

여기 ("그리스어"와 "라틴어"를 찾으십시오) : http://unicode.org/charts/ –