RuleBasedCollator: getCollationElementIterator(String source)
import java.text.CollationElementIterator;
import java.text.Collator;
import java.text.RuleBasedCollator;
public class Search {
public static int indexOf(String source, String pattern) {
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;
}
public static void main(String[] args) {
String text = "Wie hei\u00DFen Sie?"; // Wie heien Sie?
String pattern = "heissen";
int index = indexOf(text, pattern);
if (index != -1)
System.out.println("Found a match at: " + index);
else
System.out.println("No match found!");
}
}
Related examples in the same category