https://www.w3.org/2005/xpath-functions/collation/html-ascii-case-insensitive/に対応するCollatorを作成する必要があります。つまり、比較する際にASCII A-Z
とa-z
文字の大文字と小文字の区別は無視されます。HTML ASCII大文字小文字を区別しないICUコレータ
私は、次のICU4J RuleBasedCollator
でこれを試みた:
final RuleBasedCollator collator =
new RuleBasedCollator("&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, u=U, v=V, w=W, x=X, y=Y, z=Z").freeze();
ただし、以下の比較が失敗しているようだ、私はそれが成功することを期待する場所(すなわちtrue
を返す):
final SearchIterator searchIterator = new StringSearch(
"pu", new StringCharacterIterator("iNPut"), collator);
return searchIterator.first() >= 0;
私のルールには何が欠けていますか?
うーんはあなたが
&a=A &b=B &c=C
のようなものを意図したなどと思います。ルールが非対称であるのだろうか?例えば双方向で比較するには、 ''&p = P、P = p "'を定義する必要がありますか? – adamretter等号は両方向に作用しますので、ルールも同様です。 – ParallelNoob
[ICU collatorカスタマイズユーザーガイド](http://userguide.icu-project.org/collation/customization)から: x = y、 "x"と "y"の間に違いがないことを示します。 – ParallelNoob