CollationElementIterator: getOffset() : CollationElementIterator « java.text « Java by API






CollationElementIterator: getOffset()

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

1.CollationElementIterator: NULLORDER
2.CollationElementIterator: reset()