|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.text.Collator
java.text.RuleBasedCollator
public class RuleBasedCollator
RuleBasedCollator
클래스는 Collator
의 구상 서브 클래스에서, 간단한 조작으로 데이타드리분의 테이브르코레이타를 사용 가능하게 합니다. 이 클래스를 사용하면(자), 커스터마이즈 한 테이블 베이스의 Collator
를 작성할 수가 있습니다. RuleBasedCollator
는, 문자를 소트 키에 맵 합니다.
효율화를 위해서(때문에),RuleBasedCollator
에는 다음의 제약이 있습니다 (한층 더 복잡한 언어에는 다른 서브 클래스가 사용된다).
조합 테이블은 조합 룰의 리스트로부터 되어, 각각의 룰은 다음의 3 개의 형식의 어떤 것인지를 취합니다.
<수식자 > <관계 문자 > <텍스트 인수 > <리셋 문자 > <텍스트 인수 >룰 요소의 정의는 다음과 같습니다.
b c
는 bc
로서 처리됩니다.
'@' : 엑센트가 프랑스어와 같이 역방향으로 소트 되는 것을 나타냅니다.
'&' : 다음의 룰이, 리셋 텍스트 인수가 소트 되는 위치에 계속되는 것을 나타냅니다.
이것은 실제보다 복잡하게 느껴집니다. 예를 들어 다음의 예는, 같은 것을 동등의 방법으로 나타낸 것입니다.
텍스트 인수의 바로 후에 다음의 항목이 오므로, 순서가 중요합니다. 다음의 예는, 동등하지는 않습니다.a < b < c a < b & b < c a < c & a < b
순서에는, 텍스트 인수가 벌써 존재하는지, 그 텍스트 인수의 최초의 부분 캐릭터 라인이 존재하지 않으면 안됩니다 (예를 들어, 「a < b & ae < e」는 유효. 순서에 대해 「a」는, 「ae」가 리셋 되기 전에 있기 (위해)때문에). 이 후자의 케이스로, 「ae」는 1 문자로서 입력되지 않고, 그처럼은 다루어지지 않습니다. 「e」는, 2 문자 ( 「a」에 계속되는 「e」)에 확장되었는지와 같이 소트 됩니다. 이 차이는, 자연 언어로 보여집니다. 종래의 스페인어의 「ch」는 단일 문자에 단축되었는지와 같이 처리됩니다 ( 「c < ch < d」라고 표현된다). 한편, 종래의 독일어의 a 모음 변이는, 2 개의 문자에 확장되었는지와 같이 처리됩니다 ( 「a, A < b, B ... &ae;\u00e3& AE;\u00c3」라고 표현된다). \[u00e3 및 \u00c3 는 a 모음 변이의 escape sequence입니다.a < b & a < c a < c & a < b
무시 가능한 문자
무시 가능한 문자의 경우, 최초의 룰은, 관계 문자로 시작되지 않으면 안됩니다 (위의 예는 실제로는 일부를 나타내고 있다. 즉, 「a < b」는 실제로는 「< a < b」여야 함). 그러나, 최초의 관계 문자가 「<」가 아니면, 최초의 「<」까지의 모든 텍스트 인수는 무시할 수 있습니다. 예를 들어, 「, - < a < b」에서는 「-」을 무시할 수 있는 문자입니다. 이것은, 전에 「black-birds」라고 하는 말로 보았던 대로입니다. 다른 언어의 예를 보면, 대부분의 엑센트를 무시할 수 있는 것을 알 수 있습니다.
정규화와 엑센트
RuleBasedCollator
는 자동적으로 그 룰 테이블을 처리하는 것으로써, 사전 합성이 끝난 버젼과 결합 문자 버젼의 엑센트 첨부 문자가 어느쪽이나 포함되도록(듯이) 합니다. 제공되고 있는 룰 캐릭터 라인이 베이스 문자와 독립한 결합 엑센트 문자로부터 마셔 구성되는 경우, 룰 캐릭터 라인의 문자의 모든 표준적인 조합해에 일치하는 사전 합성이 끝난 엑센트 첨부 문자가 테이블에 입력됩니다.
이것으로, 코레이타가 NO_DECOMPOSITION 로 설정되어 있을 때에도, RuleBasedCollator 를 사용해 엑센트 첨부 캐릭터 라인을 비교할 수 있습니다. 다만, 주의해야 할 점이 2 개 있습니다. 1 번째는, 조합 대상의 캐릭터 라인이 표준적인 순서에 없는 결합 순서를 보관 유지하고 있는 경우, 코레이타를 CANONICAL_DECOMPOSITION 또는 FULL_DECOMPOSITION 로 설정해 결합 순서의 소트를 가능하게 할 필요가 있다고 하는 것입니다. 이제(벌써) 1 개(살)은, 캐릭터 라인이 분해 호환의 문자 (완전폭이나 반폭등의 형식)를 보관 유지하는 경우, 룰 테이블에는 표준적인 매핑만이 포함되므로 FULL_DECOMPOSITION 를 사용할 필요가 있다고 하는 것입니다.
에러
다음의 경우는, 에러가 됩니다.
RuleBasedCollator
가 ParseException
를 throw 합니다.
례
간단한 예:「<"a < b < c < d」
노르웨이어:"< a, A< b, B< c, C< d, D< e, E< f, F< g, G< h, H<i, I< j, J < k, K< l, L< m, M< n, N< o, O< p, P< q, Q< r, R< s, S< t, T < u, U< v, V< w, W< x, X< y, Y< z, Z < \u00E5=a\u030A, \u00C5=A\u030A ;aa, AA< \u00E6, \u00C6< \u00F8, \u00D8」
요구에 맞춘 특수한 룰을 가지는 RuleBasedCollator
객체를 작성하려면 ,String
객체에 룰을 지정해,RuleBasedCollator
를 구축합니다. 다음에 예를 나타냅니다.
또는:String simple = "< a< b< c< d"; RuleBasedCollator mySimple = new RuleBasedCollator(simple);
String Norwegian = "< a, A< b, B< c, C< d, D< e, E< f, F< g, G< h, H< i, I< j, J" + "< k, K< l, L< m, M< n, N< o, O< p, P< q, Q< r, R< s, S< t, T" + "< u, U< v, V< w, W< x, X< y, Y< z, Z" + "< \u00E5=a\u030A, \u00C5=A\u030A" + ";aa, AA< \u00E6, \u00C6< \u00F8, \u00D8"; RuleBasedCollator myNorwegian = new RuleBasedCollator(Norwegian);
룰 캐릭터 라인을 연결해 새로운 조합 룰 캐릭터 라인을 작성할 수 있습니다. 예를 들어,getRules()
로부터 반환된 룰을 연결해, 복수의 RuleBasedCollator
를 조합할 수가 있습니다.
다음의 예는, 비스페이싱아크센트의 순서를 변경하는 방법을 나타내고 있습니다.
// old rule String oldRules = "=\u0301;\u0300;\u0302;\u0308" // main accents + ";\u0327;\u0303;\u0304;\u0305" // main accents + ";\u0306;\u0307;\u0309;\u030A" // main accents + ";\u030B;\u030C;\u030D;\u030E" // main accents + ";\u030F;\u0310;\u0311;\u0312" // main accents + "< a , A ; ae, AE ; \u00e6 , \u00c6" + "< b , B < c, C < e, E & C < d, D"; // change the order of accent characters String addOn = "& \u0300 ; \u0308 ; \u0302"; RuleBasedCollator myCollator = new RuleBasedCollator(oldRules + addOn);
Collator
,
CollationElementIterator
필드의 개요 |
---|
클래스 java.text. Collator 로부터 상속된 필드 |
---|
CANONICAL_DECOMPOSITION , FULL_DECOMPOSITION , IDENTICAL , NO_DECOMPOSITION , PRIMARY , SECONDARY , TERTIARY |
생성자 의 개요 | |
---|---|
RuleBasedCollator (String rules)
RuleBasedCollator 의 생성자 입니다. |
메소드의 개요 | |
---|---|
Object |
clone ()
표준 오버라이드(override)입니다. |
int |
compare (String source,
String target)
2 개가 다른 캐릭터 라인에 포함된 문자 데이터를, 조합 룰에 따라 비교합니다. |
boolean |
equals (Object obj)
2 개의 조합 객체가 동일한지 어떤지를 비교합니다. |
CollationElementIterator |
getCollationElementIterator (CharacterIterator source)
지정된 String 의 CollationElementIterator 를 돌려줍니다. |
CollationElementIterator |
getCollationElementIterator (String source)
지정된 String 의 CollationElementIterator 를 돌려줍니다. |
CollationKey |
getCollationKey (String source)
캐릭터 라인을, CollationKey.compareTo 로 비교할 수 있는 일련의 문자로 변환합니다. |
String |
getRules ()
조합 객체에 대한 테이블 베이스 룰을 가져옵니다. |
int |
hashCode ()
테이블 베이스 조합 객체의 해시 코드를 생성합니다. |
클래스 java.text. Collator 로부터 상속된 메소드 |
---|
compare , equals , getAvailableLocales , getDecomposition , getInstance , getInstance , getStrength , setDecomposition , setStrength |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
finalize , getClass , notify , notifyAll , toString , wait , wait , wait |
생성자 의 상세 |
---|
public RuleBasedCollator(String rules) throws ParseException
rules
- 조합 테이블을 구축하는 바탕으로 되는 조합 룰
ParseException
- 룰의 구축 프로세스가 실패하면(자),
포맷 예외가 throw 된다. 예를 들어,
구축 룰의 「a < ? < d」는 「?」(이)가 인용부호로 둘러싸이지 않기 때문에,
생성자 에 의해 ParseException 가 throw 되는Locale
메소드의 상세 |
---|
public String getRules()
public CollationElementIterator getCollationElementIterator(String source)
CollationElementIterator
public CollationElementIterator getCollationElementIterator(CharacterIterator source)
CollationElementIterator
public int compare(String source, String target)
Collator
내의 compare
source
- 소스 캐릭터 라인target
- 타겟 캐릭터 라인
CollationKey
,
Collator.getCollationKey(java.lang.String)
public CollationKey getCollationKey(String source)
Collator
내의 getCollationKey
source
- 조합 키로 변환하는 캐릭터 라인
CollationKey
,
Collator.compare(java.lang.String, java.lang.String)
public Object clone()
Collator
내의 clone
Cloneable
public boolean equals(Object obj)
Comparator <Object >
내의 equals
Collator
내의 equals
obj
- 비교 대상의 테이블 베이스의 조합 객체
Object.hashCode()
,
Hashtable
public int hashCode()
Collator
내의 hashCode
Object.equals(java.lang.Object)
,
Hashtable
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.