Mega Code Archive

 
Categories / Java / Internationalization
 

Searching, Sorting, and Text Boundary Detection

/* Java Internationalization By Andy Deitsch, David Czarnecki ISBN: 0-596-00019-7 O'Reilly */ import java.text.*; public class JavaSearch {   public static int indexOf(String source, String pattern) {     // 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;   }   public static void main(String [] args) {     String text = "Wie hei\u00DFen Sie?"; // Wie heiBen 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!");   } }