Mega Code Archive

 
Categories / Java by API / Java Text
 

CollationElementIterator

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 heißen 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!");   } }