Class 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 Detail

      • CanonicalIterator

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

      • 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