Class CanonicalIterator

java.lang.Object
com.ibm.icu.text.CanonicalIterator

public final class CanonicalIterator extends Object
This class allows one to iterate through all the strings that are canonically equivalent to a given string. For example, here are some sample results: Results for: {A WITH RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
 1: {A}{RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
 2: {A}{RING ABOVE}{d}{CEDILLA}{DOT ABOVE}
 3: {A}{RING ABOVE}{d WITH DOT ABOVE}{CEDILLA}
 4: {A}{RING ABOVE}{d WITH CEDILLA}{DOT ABOVE}
 5: {A WITH RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
 6: {A WITH RING ABOVE}{d}{CEDILLA}{DOT ABOVE}
 7: {A WITH RING ABOVE}{d WITH DOT ABOVE}{CEDILLA}
 8: {A WITH RING ABOVE}{d WITH CEDILLA}{DOT ABOVE}
 9: {ANGSTROM SIGN}{d}{DOT ABOVE}{CEDILLA}
10: {ANGSTROM SIGN}{d}{CEDILLA}{DOT ABOVE}
11: {ANGSTROM SIGN}{d WITH DOT ABOVE}{CEDILLA}
12: {ANGSTROM SIGN}{d WITH CEDILLA}{DOT ABOVE}

Note: the code is intended for use with small strings, and is not suitable for larger ones, since it has not been optimized for that situation.
Author:
M. Davis
  • Constructor Details

    • CanonicalIterator

      public CanonicalIterator(String source)
      Construct a CanonicalIterator object
      Parameters:
      source - string to get results for
  • Method Details

    • getSource

      public String getSource()
      Gets the NFD form of the current source we are iterating over.
      Returns:
      gets the source: NOTE: it is the NFD form of the source originally passed in
    • reset

      public void reset()
      Resets the iterator so that one can start again from the beginning.
    • next

      public String next()
      Get the next canonically equivalent string.
      Warning: The strings are not guaranteed to be in any particular order.
      Returns:
      the next string that is canonically equivalent. The value null is returned when the iteration is done.
    • setSource

      public void setSource(String newSource)
      Set a new source for this iterator. Allows object reuse.
      Parameters:
      newSource - the source string to iterate against. This allows the same iterator to be used while changing the source string, saving object creation.
    • permute

      @Deprecated public static void permute(String source, boolean skipZeros, Set<String> output)
      Deprecated.
      This API is ICU internal only.
      Simple implementation of permutation.
      Warning: The strings are not guaranteed to be in any particular order.
      Parameters:
      source - the string to find permutations for
      skipZeros - set to true to skip characters with canonical combining class zero
      output - the set to add the results to