// Obtain a collator
RuleBasedCollator rbc=(RuleBasedCollator)Collator.getInstance();
rbc.setStrength(Collator.SECONDARY);
CollationElementIterator textCEI;
CollationElementIterator patCEI;
textCEI = rbc.getCollationElementIterator(source);
patCEI = rbc.getCollationElementIterator(pattern);
// e1 will contain the collation element for the source
// e2 will contain the collation element for the pattern
int e1, e2;
int startMatch = -1;
// initialize e2 with the first collation element in the pattern
e2 = patCEI.next();
while ((e1 = textCEI.next())!=CollationElementIterator.NULLORDER) {
if (e1 == e2) { // if the elements match
if (startMatch == -1) startMatch = textCEI.getOffset();
e2 = patCEI.next(); // increment to the next element
if (e2 == CollationElementIterator.NULLORDER)
break;
} else { // elements do not match
if (startMatch != -1) {
patCEI.reset();
e2 = patCEI.next();
startMatch = -1;
}
}
}
return startMatch;