Search.java Source code

Java tutorial

Introduction

Here is the source code for Search.java

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