Esempio

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("Le stringhe non supportano i caratteri supplementari."); //$NON-NLS-1$
} else {
System.out.println("Index = " + 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("Il carattere 'A' non deve corrispondere a A\\u0300");
}
}
public static void TestIndexOf() {
String str = "A quick fox jumped over the lazy dog.";
int index = str.indexOf("FOX");
if (index == -1 ) {
System.out.println("IndexOf non supporta la corrispondenza con rilevamento delle impostazioni internazionali.");
}else {
System.out.println("OK!");
}
}
Soluzione
Utilizzare ICU 2.6.1com.ibm.icu.text.StringSearch, fare riferimento a StringSearch Java Doc

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("FOX", new StringCharacterIterator("A quick fox jumped over the lazy dog."), coll); //$NON-NLS-1$ //$NON-NLS-2$
int index = search.first();
System.out.println("Index = " + index); //$NON-NLS-1$
}