티스토리 뷰
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 e
이 M 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
오브젝트는 심지어 몇 단계로 구분하여 문자 차이를 이해할 수 있다. 가령 e
와 d
는 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.");
}