티스토리 뷰

Programming Language/JAVA

Collator 클래스

광식'S Story 2009. 1. 21. 14:17

Collator 사용하기

java.text.Collator 클래스는 자연어 비교 기능을 제공하는데, 자연어 비교는 주로 특정 서체의 문자들에 대한 동일성과 순서를 결정하는 지역 고유의(locale-specific) 규칙에 의존한다.

Collator 오브젝트는 사전에서 'cat'이 'Hat'보다 먼저 나온다는 사실을 이해하므로 collator 비교를 이용할 경우 다음 코드는 cat < Hat을 출력하게 된다.

Collator collator = Collator.getInstance(new Locale("en", "US"));
int comparison = collator.compare("cat", "Hat");
if (comparison < 0) {
  System.out.printf("%s < %s\n", "cat", "Hat");
} else {
  System.out.printf("%s < %s\n", "Hat", "cat" );
}

collator는 경우에 따라(대개는 자연어 처리가 중요한 경우) 문자 시퀀스 M i c h è l eM i c h e ` l e과 동일하다는 것을 알고 있다.

다음 비교에서는 Collator 오브젝트가 사용되는데, 이는 시퀀스 조합을 인식하여 두 문자열이 동일한 것으로 판단한다. 따라서 ' The strings are equal.'이라고 나타난다.

Collator collator = Collator.getInstance(Locale.US);
String name1 = "Michèle";
String name2 = "Miche\u0300le";
int comparison = collator.compare(name1, name2);
if (comparison == 0) {
  System.out.println("The strings are equal.");
} else {
  System.out.println("The string are unequal.");
}

Collator 오브젝트는 심지어 몇 단계로 구분하여 문자 차이를 이해할 수 있다. 가령 ed는 2개의 서로 다른 글자인데, 이런 차이는 '1차적' 차이이다. 한편 글자 eè도 역시 다르지만, 그 차이는 '2차적' 특성을 띤다 할 수 있다. 또한 Collator 인스턴스 구성 방식에 따라 단어 'Michèle'과 'Michele'을 동일하게 간주할 수도 있다. 다음 코드는 'The strings are equal.'을 출력한다.

Collator collator = Collator.getInstance(Locale.US);
collator.setStrength(Collator.PRIMARY);
int comparison = collator.compare("Michèle", "Michele");
if (comparison == 0) {
  System.out.println("The strings are equal.");
} else {
  System.out.println("The string are unequal.");
}

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/05   »
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
글 보관함