Tôi cần phải tạo một Trình cộng tác tương ứng với https://www.w3.org/2005/xpath-functions/collation/html-ascii-case-insensitive/ tức là nó bỏ qua độ nhạy trường hợp của các ký tự ASCII A-Z
và a-z
khi so sánh.Trình biên tập ICU không hợp lệ HTML ASCII
tôi đã cố gắng này với ICU4j sau 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();
Tuy nhiên, so sánh sau đây dường như thất bại, mà tôi mong chờ nó để thành công (tức là trở true
):
final SearchIterator searchIterator = new StringSearch(
"pu", new StringCharacterIterator("iNPut"), collator);
return searchIterator.first() >= 0;
Tôi đang thiếu gì trong quy tắc của mình?
Hmm đó là thú vị. Tôi tự hỏi, nếu các quy tắc là không đối xứng? ví dụ. để so sánh theo cả hai hướng, tôi có cần định nghĩa '" & p = P, P = p "' không? – adamretter
Dấu bằng hoạt động theo cả hai cách để quy tắc cũng vậy, phải không? – ParallelNoob
Từ [hướng dẫn sử dụng tùy chỉnh của trình thu thập ICU] (http://userguide.icu-project.org/collation/customization): x = y, Không có sự khác biệt giữa "x" và "y". – ParallelNoob