Przykład

public static void main( String[] args) {
String str = "ABC\ud800\udc00"; //\ud800\udc00 = U+10000 //$NON-NLS-1$
int index = str.indexOf( 0x10000 );
if ( index == -1 ) {
System.out.println("Łańcuch nie obsługuje znaku uzupełniającego."); //$NON-NLS-1$
} else {
System.out.println("Indeks = " + index); //$NON-NLS-1$
}
}

public static void TestIndexOf() {
String str = "A\u0300";
int index = str.indexOf(A);
if (index == -1 ) {
System.out.println("OK!");
}else {
System.out.println("Znaku 'A' nie należy porównywać w A\\u0300");
}
}
public static void TestIndexOf() {
String str = "Szybki lis przeskoczył nad leniwym psem.";
int index = str.indexOf("LIS");
if (index == -1 ) {
System.out.println("IndexOf nie obsługuje zgodności zależnej od ustawień narodowych.");
}else {
System.out.println("OK!");
}
}
Rozwiązanie
Użyj klasy ICU 2.6.1com.ibm.icu.text.StringSearch, patrz dokumentacja Javadoc klasy StringSearch

public static void main( String[] args) {
RuleBasedCollator coll = (RuleBasedCollator)Collator.getInstance(Locale.US);
coll.setStrength(Collator.PRIMARY);
com.ibm.icu.text.StringSearch search = new com.ibm.icu.text.StringSearch("LIS", new StringCharacterIterator("Szybki lis przeskoczył nad leniwym psem."), coll); //$NON-NLS-1$ //$NON-NLS-2$
int index = search.first();
System.out.println("Indeks = " + index); //$NON-NLS-1$
}