Java by API/java.text/CollationElementIterator

Материал из Java эксперт
Перейти к: навигация, поиск

CollationElementIterator: getOffset()

   <source lang="java">

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

}

      </source>
   
  
 
  



CollationElementIterator: NULLORDER

   <source lang="java">

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

}

      </source>
   
  
 
  



CollationElementIterator: reset()

   <source lang="java">

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

}

      </source>