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