The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package gma.util;

/**
 * <p>Title: </p>
 * <p>Description: StringUtil is a utility class for string manipulation.</p>
 * <p>Copyright: Copyright (c) 2004 I. Dan Melamed</p>
 * <p>Company: Department of Computer Science, New York University</p>
 * @author Luke Shen
 */

public class StringUtil {

  /**
   * Normalizes string.
   * @param source                    source string for normalization
   * @return                          normalized string
   */
  public static String norm(String source) {
    String destination = "";
    for (int index = 0; index < source.length(); index++) {
      char c = source.charAt(index);
      switch (c) {
        case 'À': destination += 'A'; break;
        case 'Á': destination += 'A'; break;
        case 'Â': destination += 'A'; break;
        case 'Ã': destination += 'A'; break;
        case 'Ä': destination += 'A'; break;
        case 'Å': destination += 'A'; break;
        case 'Ç': destination += 'C'; break;
        case 'È': destination += 'E'; break;
        case 'É': destination += 'E'; break;
        case 'Ê': destination += 'E'; break;
        case 'Ë': destination += 'E'; break;
        case 'Î': destination += 'I'; break;
        case 'Í': destination += 'I'; break;
        case 'Ì': destination += 'I'; break;
        case 'Ï': destination += 'I'; break;
        case 'Ñ': destination += 'N'; break;
        case 'Ô': destination += 'O'; break;
        case 'Ò': destination += 'O'; break;
        case 'Ó': destination += 'O'; break;
        case 'Õ': destination += 'O'; break;
        case 'Ö': destination += 'O'; break;
        case 'Ø': destination += 'O'; break;
        case 'Û': destination += 'U'; break;
        case 'Ú': destination += 'U'; break;
        case 'Ù': destination += 'U'; break;
        case 'Ü': destination += 'U'; break;
        case 'à': destination += 'a'; break;
        case 'â': destination += 'a'; break;
        case 'ä': destination += 'a'; break;
        case 'á': destination += 'a'; break;
        case 'å': destination += 'a'; break;
        case 'æ': destination += "ae"; break;
        case 'ç': destination += 'c'; break;
        case 'è': destination += 'e'; break;
        case 'é': destination += 'e'; break;
        case 'ê': destination += 'e'; break;
        case 'ë': destination += 'e'; break;
        case 'î': destination += 'i'; break;
        case 'í': destination += 'i'; break;
        case 'ì': destination += 'i'; break;
        case 'ï': destination += 'i'; break;
        case 'ñ': destination += 'n'; break;
        case 'ô': destination += 'o'; break;
        case 'ó': destination += 'o'; break;
        case 'ò': destination += 'o'; break;
        case 'ö': destination += 'o'; break;
        case 'ø': destination += 'o'; break;
        case 'ß': destination += "ss"; break;
        case 'ù': destination += 'u'; break;
        case 'ú': destination += 'u'; break;
        case 'û': destination += 'u'; break;
        case 'ü': destination += 'u'; break;
        case 'ÿ': destination += 'y'; break;
        default: destination += c; break;
      }
    }
    return destination;
  }
}