/**
* IntelliGID
* Copyright (C) 2010 DocuLibre inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.constellio.data.utils;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang.StringUtils;
public class AccentApostropheCleaner {
private static List<String> aposs = Arrays.asList(new String[] { "l'",
"d'", "m'", "t'", "qu'", "n'", "s'", "j'", "l’", "l’", "m’", "t’",
"qu’", "n’", "s’", "j’", "c'", "c’" });
public final static String removeApostrophe(String text) {
for (String apos : aposs) {
if (text.startsWith(apos)) {
text = text.substring(2, text.length());
}
}
return text;
}
public final static String removePluriel(String text) {
if (text == null) {
return "";
}
if (text.toLowerCase().endsWith("s")) {
text = text.substring(0, text.length() - 1);
}
return text;
}
public final static String removeAccents(String input) {
if (input == null) {
return "";
}
final StringBuffer output = new StringBuffer();
for (int i = 0; i < input.length(); i++) {
switch (input.charAt(i)) {
case '\u0400':
output.append('\u0065');
break;
case '\u0401':
output.append('\u0065');
break;
case '\u0407':
output.append('\u0069');
break;
case '\u0450':
output.append('\u0065');
break;
case '\u0451':
output.append('\u0065');
break;
case '\u0457':
output.append('\u0069');
break;
case '\u04D0':
output.append('\u0061');
break;
case '\u04D1':
output.append('\u0061');
break;
case '\u04D2':
output.append('\u0061');
break;
case '\u04D3':
output.append('\u0061');
break;
case '\u04D6':
output.append('\u0065');
break;
case '\u04D7':
output.append('\u0065');
break;
case '\u04E6':
output.append('\u006F');
break;
case '\u04E7':
output.append('\u006F');
break;
case '\u04EE':
output.append('\u0079');
break;
case '\u04EF':
output.append('\u0079');
break;
case '\u04F0':
output.append('\u0079');
break;
case '\u04F1':
output.append('\u0079');
break;
case '\u04F2':
output.append('\u0079');
break;
case '\u04F3':
output.append('\u0079');
break;
case '\u0386':
output.append('\u0061');
break;
case '\u0388':
output.append('\u0065');
break;
case '\u0389':
output.append('\u0068');
break;
case '\u038A':
output.append('\u0069');
break;
case '\u038C':
output.append('\u006F');
break;
case '\u038E':
output.append('\u0079');
break;
case '\u0390':
output.append('\u0069');
break;
case '\u03AA':
output.append('\u0069');
break;
case '\u03AB':
output.append('\u0079');
break;
case '\u03AF':
output.append('\u0069');
break;
case '\u03CA':
output.append('\u0069');
break;
case '\u03CC':
output.append('\u006F');
break;
case '\u1F08':
output.append('\u0061');
break;
case '\u1F09':
output.append('\u0061');
break;
case '\u1F0A':
output.append('\u0061');
break;
case '\u1F0B':
output.append('\u0061');
break;
case '\u1F0C':
output.append('\u0061');
break;
case '\u1F0D':
output.append('\u0061');
break;
case '\u1F0E':
output.append('\u0061');
break;
case '\u1F0F':
output.append('\u0061');
break;
case '\u1F18':
output.append('\u0065');
break;
case '\u1F19':
output.append('\u0065');
break;
case '\u1F1A':
output.append('\u0065');
break;
case '\u1F1B':
output.append('\u0065');
break;
case '\u1F1C':
output.append('\u0065');
break;
case '\u1F1D':
output.append('\u0065');
break;
case '\u1F28':
output.append('\u0068');
break;
case '\u1F29':
output.append('\u0068');
break;
case '\u1F2A':
output.append('\u0068');
break;
case '\u1F2B':
output.append('\u0068');
break;
case '\u1F2C':
output.append('\u0068');
break;
case '\u1F2D':
output.append('\u0068');
break;
case '\u1F2E':
output.append('\u0068');
break;
case '\u1F2F':
output.append('\u0068');
break;
case '\u1F30':
output.append('\u0069');
break;
case '\u1F31':
output.append('\u0069');
break;
case '\u1F32':
output.append('\u0069');
break;
case '\u1F33':
output.append('\u0069');
break;
case '\u1F34':
output.append('\u0069');
break;
case '\u1F35':
output.append('\u0069');
break;
case '\u1F36':
output.append('\u0069');
break;
case '\u1F37':
output.append('\u0069');
break;
case '\u1F38':
output.append('\u0069');
break;
case '\u1F39':
output.append('\u0069');
break;
case '\u1F3A':
output.append('\u0069');
break;
case '\u1F3B':
output.append('\u0069');
break;
case '\u1F3C':
output.append('\u0069');
break;
case '\u1F3D':
output.append('\u0069');
break;
case '\u1F3E':
output.append('\u0069');
break;
case '\u1F3F':
output.append('\u0069');
break;
case '\u1F40':
output.append('\u006F');
break;
case '\u1F41':
output.append('\u006F');
break;
case '\u1F42':
output.append('\u006F');
break;
case '\u1F43':
output.append('\u006F');
break;
case '\u1F44':
output.append('\u006F');
break;
case '\u1F45':
output.append('\u006F');
break;
case '\u1F48':
output.append('\u006F');
break;
case '\u1F49':
output.append('\u006F');
break;
case '\u1F4A':
output.append('\u006F');
break;
case '\u1F4B':
output.append('\u006F');
break;
case '\u1F4C':
output.append('\u006F');
break;
case '\u1F4D':
output.append('\u006F');
break;
case '\u1F59':
output.append('\u0079');
break;
case '\u1F5B':
output.append('\u0079');
break;
case '\u1F5D':
output.append('\u0079');
break;
case '\u1F5F':
output.append('\u0079');
break;
case '\u1F76':
output.append('\u0069');
break;
case '\u1F77':
output.append('\u0069');
break;
case '\u1F78':
output.append('\u006F');
break;
case '\u1F79':
output.append('\u006F');
break;
case '\u1F88':
output.append('\u0061');
break;
case '\u1F89':
output.append('\u0061');
break;
case '\u1F8A':
output.append('\u0061');
break;
case '\u1F8B':
output.append('\u0061');
break;
case '\u1F8C':
output.append('\u0061');
break;
case '\u1F8D':
output.append('\u0061');
break;
case '\u1F8E':
output.append('\u0061');
break;
case '\u1F8F':
output.append('\u0061');
break;
case '\u1F98':
output.append('\u0068');
break;
case '\u1F99':
output.append('\u0068');
break;
case '\u1F9A':
output.append('\u0068');
break;
case '\u1F9B':
output.append('\u0068');
break;
case '\u1F9C':
output.append('\u0068');
break;
case '\u1F9D':
output.append('\u0068');
break;
case '\u1F9E':
output.append('\u0068');
break;
case '\u1F9F':
output.append('\u0068');
break;
case '\u1FB8':
output.append('\u0061');
break;
case '\u1FB9':
output.append('\u0061');
break;
case '\u1FBA':
output.append('\u0061');
break;
case '\u1FBB':
output.append('\u0061');
break;
case '\u1FBC':
output.append('\u0061');
break;
case '\u1FC8':
output.append('\u0065');
break;
case '\u1FC9':
output.append('\u0065');
break;
case '\u1FCA':
output.append('\u0068');
break;
case '\u1FCB':
output.append('\u0068');
break;
case '\u1FCC':
output.append('\u0068');
break;
case '\u1FD0':
output.append('\u0069');
break;
case '\u1FD1':
output.append('\u0069');
break;
case '\u1FD2':
output.append('\u0069');
break;
case '\u1FD3':
output.append('\u0069');
break;
case '\u1FD6':
output.append('\u0069');
break;
case '\u1FD7':
output.append('\u0069');
break;
case '\u1FD8':
output.append('\u0069');
break;
case '\u1FD9':
output.append('\u0069');
break;
case '\u1FDA':
output.append('\u0069');
break;
case '\u1FDB':
output.append('\u0069');
break;
case '\u1FE8':
output.append('\u0079');
break;
case '\u1FE9':
output.append('\u0079');
break;
case '\u1FEA':
output.append('\u0079');
break;
case '\u1FEB':
output.append('\u0079');
break;
case '\u1FEC':
output.append('\u0070');
break;
case '\u1FF8':
output.append('\u006F');
break;
case '\u1FF9':
output.append('\u006F');
break;
case '\u00C0':
output.append('\u0061');
break;
case '\u00C1':
output.append('\u0061');
break;
case '\u00C2':
output.append('\u0061');
break;
case '\u00C3':
output.append('\u0061');
break;
case '\u00C4':
output.append('\u0061');
break;
case '\u00C5':
output.append('\u0061');
break;
case '\u00C7':
output.append('\u0063');
break;
case '\u00C8':
output.append('\u0045');
break;
case '\u00C9':
output.append('\u0045');
break;
case '\u00CA':
output.append('\u0045');
break;
case '\u00CB':
output.append('\u0045');
break;
case '\u00CC':
output.append('\u0069');
break;
case '\u00CD':
output.append('\u0069');
break;
case '\u00CE':
output.append('\u0069');
break;
case '\u00CF':
output.append('\u0069');
break;
case '\u00D0':
output.append('\u0064');
break;
case '\u00D1':
output.append('\u006E');
break;
case '\u00D2':
output.append('\u006F');
break;
case '\u00D3':
output.append('\u006F');
break;
case '\u00D4':
output.append('\u006F');
break;
case '\u00D5':
output.append('\u006F');
break;
case '\u00D6':
output.append('\u006F');
break;
case '\u00D8':
output.append('\u006F');
break;
case '\u00D9':
output.append('\u0075');
break;
case '\u00DA':
output.append('\u0075');
break;
case '\u00DB':
output.append('\u0075');
break;
case '\u00DC':
output.append('\u0075');
break;
case '\u00DD':
output.append('\u0079');
break;
case '\u00E0':
output.append('\u0061');
break;
case '\u00E1':
output.append('\u0061');
break;
case '\u00E2':
output.append('\u0061');
break;
case '\u00E3':
output.append('\u0061');
break;
case '\u00E4':
output.append('\u0061');
break;
case '\u00E5':
output.append('\u0061');
break;
case '\u00E7':
output.append('\u0063');
break;
case '\u00E8':
output.append('\u0065');
break;
case '\u00E9':
output.append('\u0065');
break;
case '\u00EA':
output.append('\u0065');
break;
case '\u00EB':
output.append('\u0065');
break;
case '\u00EC':
output.append('\u0069');
break;
case '\u00ED':
output.append('\u0069');
break;
case '\u00EE':
output.append('\u0069');
break;
case '\u00EF':
output.append('\u0069');
break;
case '\u00F1':
output.append('\u006E');
break;
case '\u00F2':
output.append('\u006F');
break;
case '\u00F3':
output.append('\u006F');
break;
case '\u00F4':
output.append('\u006F');
break;
case '\u00F5':
output.append('\u006F');
break;
case '\u00F6':
output.append('\u006F');
break;
case '\u00F8':
output.append('\u006F');
break;
case '\u00F9':
output.append('\u0075');
break;
case '\u00FA':
output.append('\u0075');
break;
case '\u00FB':
output.append('\u0075');
break;
case '\u00FC':
output.append('\u0075');
break;
case '\u00FD':
output.append('\u0079');
break;
case '\u00FF':
output.append('\u0079');
break;
case '\u0100':
output.append('\u0061');
break;
case '\u0101':
output.append('\u0061');
break;
case '\u0102':
output.append('\u0061');
break;
case '\u0103':
output.append('\u0061');
break;
case '\u0104':
output.append('\u0061');
break;
case '\u0105':
output.append('\u0061');
break;
case '\u0106':
output.append('\u0063');
break;
case '\u0107':
output.append('\u0063');
break;
case '\u0108':
output.append('\u0063');
break;
case '\u0109':
output.append('\u0063');
break;
case '\u010A':
output.append('\u0063');
break;
case '\u010B':
output.append('\u0063');
break;
case '\u010C':
output.append('\u0063');
break;
case '\u010D':
output.append('\u0063');
break;
case '\u010E':
output.append('\u0064');
break;
case '\u010F':
output.append('\u0064');
break;
case '\u0110':
output.append('\u0064');
break;
case '\u0111':
output.append('\u0064');
break;
case '\u0112':
output.append('\u0065');
break;
case '\u0113':
output.append('\u0065');
break;
case '\u0114':
output.append('\u0065');
break;
case '\u0115':
output.append('\u0065');
break;
case '\u0116':
output.append('\u0065');
break;
case '\u0117':
output.append('\u0065');
break;
case '\u0118':
output.append('\u0065');
break;
case '\u0119':
output.append('\u0065');
break;
case '\u011A':
output.append('\u0065');
break;
case '\u011B':
output.append('\u0065');
break;
case '\u011C':
output.append('\u0067');
break;
case '\u011D':
output.append('\u0067');
break;
case '\u011E':
output.append('\u0067');
break;
case '\u011F':
output.append('\u0067');
break;
case '\u0120':
output.append('\u0067');
break;
case '\u0121':
output.append('\u0067');
break;
case '\u0122':
output.append('\u0067');
break;
case '\u0123':
output.append('\u0067');
break;
case '\u0124':
output.append('\u0068');
break;
case '\u0125':
output.append('\u0068');
break;
case '\u0126':
output.append('\u0068');
break;
case '\u0127':
output.append('\u0068');
break;
case '\u0128':
output.append('\u0069');
break;
case '\u0129':
output.append('\u0069');
break;
case '\u012A':
output.append('\u0069');
break;
case '\u012B':
output.append('\u0069');
break;
case '\u012C':
output.append('\u0069');
break;
case '\u012D':
output.append('\u0069');
break;
case '\u012E':
output.append('\u0069');
break;
case '\u012F':
output.append('\u0069');
break;
case '\u0130':
output.append('\u0069');
break;
case '\u0131':
output.append('\u0069');
break;
case '\u0134':
output.append('\u006A');
break;
case '\u0135':
output.append('\u006A');
break;
case '\u0136':
output.append('\u006B');
break;
case '\u0137':
output.append('\u006B');
break;
case '\u0138':
output.append('\u006B');
break;
case '\u0139':
output.append('\u006C');
break;
case '\u013A':
output.append('\u006C');
break;
case '\u013B':
output.append('\u006C');
break;
case '\u013C':
output.append('\u006C');
break;
case '\u013D':
output.append('\u006C');
break;
case '\u013E':
output.append('\u006C');
break;
case '\u013F':
output.append('\u006C');
break;
case '\u0140':
output.append('\u006C');
break;
case '\u0141':
output.append('\u006C');
break;
case '\u0142':
output.append('\u006C');
break;
case '\u0143':
output.append('\u006E');
break;
case '\u0144':
output.append('\u006E');
break;
case '\u0145':
output.append('\u006E');
break;
case '\u0146':
output.append('\u006E');
break;
case '\u0147':
output.append('\u006E');
break;
case '\u0148':
output.append('\u006E');
break;
case '\u0149':
output.append('\u006E');
break;
case '\u014A':
output.append('\u006E');
break;
case '\u014B':
output.append('\u006E');
break;
case '\u014C':
output.append('\u006F');
break;
case '\u014D':
output.append('\u006F');
break;
case '\u014E':
output.append('\u006F');
break;
case '\u014F':
output.append('\u006F');
break;
case '\u0150':
output.append('\u006F');
break;
case '\u0151':
output.append('\u006F');
break;
case '\u0154':
output.append('\u0072');
break;
case '\u0155':
output.append('\u0072');
break;
case '\u0156':
output.append('\u0072');
break;
case '\u0157':
output.append('\u0072');
break;
case '\u0158':
output.append('\u0072');
break;
case '\u0159':
output.append('\u0072');
break;
case '\u015A':
output.append('\u0073');
break;
case '\u015B':
output.append('\u0073');
break;
case '\u015C':
output.append('\u0073');
break;
case '\u015D':
output.append('\u0073');
break;
case '\u015E':
output.append('\u0073');
break;
case '\u015F':
output.append('\u0073');
break;
case '\u0160':
output.append('\u0073');
break;
case '\u0161':
output.append('\u0073');
break;
case '\u0162':
output.append('\u0074');
break;
case '\u0163':
output.append('\u0074');
break;
case '\u0164':
output.append('\u0074');
break;
case '\u0165':
output.append('\u0074');
break;
case '\u0166':
output.append('\u0074');
break;
case '\u0167':
output.append('\u0074');
break;
case '\u0168':
output.append('\u0075');
break;
case '\u0169':
output.append('\u0075');
break;
case '\u016A':
output.append('\u0075');
break;
case '\u016B':
output.append('\u0075');
break;
case '\u016C':
output.append('\u0075');
break;
case '\u016D':
output.append('\u0075');
break;
case '\u016E':
output.append('\u0075');
break;
case '\u016F':
output.append('\u0075');
break;
case '\u0170':
output.append('\u0075');
break;
case '\u0171':
output.append('\u0075');
break;
case '\u0172':
output.append('\u0075');
break;
case '\u0173':
output.append('\u0075');
break;
case '\u0174':
output.append('\u0077');
break;
case '\u0175':
output.append('\u0077');
break;
case '\u0176':
output.append('\u0079');
break;
case '\u0177':
output.append('\u0079');
break;
case '\u0178':
output.append('\u0079');
break;
case '\u0179':
output.append('\u007A');
break;
case '\u017A':
output.append('\u007A');
break;
case '\u017B':
output.append('\u007A');
break;
case '\u017C':
output.append('\u007A');
break;
case '\u017D':
output.append('\u007A');
break;
case '\u017E':
output.append('\u007A');
break;
case '\u0180':
output.append('\u0062');
break;
case '\u0181':
output.append('\u0062');
break;
case '\u0182':
output.append('\u0062');
break;
case '\u0183':
output.append('\u0062');
break;
case '\u0184':
output.append('\u0062');
break;
case '\u0185':
output.append('\u0062');
break;
case '\u0187':
output.append('\u0063');
break;
case '\u0188':
output.append('\u0063');
break;
case '\u0189':
output.append('\u0064');
break;
case '\u018A':
output.append('\u0064');
break;
case '\u018B':
output.append('\u0064');
break;
case '\u018C':
output.append('\u0064');
break;
case '\u0191':
output.append('\u0066');
break;
case '\u0192':
output.append('\u0066');
break;
case '\u0193':
output.append('\u0067');
break;
case '\u0197':
output.append('\u0069');
break;
case '\u0198':
output.append('\u006B');
break;
case '\u0199':
output.append('\u006B');
break;
case '\u019A':
output.append('\u006C');
break;
case '\u019D':
output.append('\u006E');
break;
case '\u019E':
output.append('\u006E');
break;
case '\u019F':
output.append('\u006F');
break;
case '\u01A0':
output.append('\u006F');
break;
case '\u01A1':
output.append('\u006F');
break;
case '\u01A4':
output.append('\u0070');
break;
case '\u01A5':
output.append('\u0070');
break;
case '\u01AB':
output.append('\u0074');
break;
case '\u01AC':
output.append('\u0074');
break;
case '\u01AD':
output.append('\u0074');
break;
case '\u01AE':
output.append('\u0074');
break;
case '\u01AF':
output.append('\u0075');
break;
case '\u01B0':
output.append('\u0075');
break;
case '\u01B3':
output.append('\u0079');
break;
case '\u01B4':
output.append('\u0079');
break;
case '\u01B5':
output.append('\u007A');
break;
case '\u01B6':
output.append('\u007A');
break;
case '\u01CD':
output.append('\u0061');
break;
case '\u01CE':
output.append('\u0061');
break;
case '\u01CF':
output.append('\u0069');
break;
case '\u01D0':
output.append('\u0069');
break;
case '\u01D1':
output.append('\u006F');
break;
case '\u01D2':
output.append('\u006F');
break;
case '\u01D3':
output.append('\u0075');
break;
case '\u01D4':
output.append('\u0075');
break;
case '\u01D5':
output.append('\u0075');
break;
case '\u01D6':
output.append('\u0075');
break;
case '\u01D7':
output.append('\u0075');
break;
case '\u01D8':
output.append('\u0075');
break;
case '\u01D9':
output.append('\u0075');
break;
case '\u01DA':
output.append('\u0075');
break;
case '\u01DB':
output.append('\u0075');
break;
case '\u01DC':
output.append('\u0075');
break;
case '\u01DE':
output.append('\u0061');
break;
case '\u01DF':
output.append('\u0061');
break;
case '\u01E0':
output.append('\u0061');
break;
case '\u01E1':
output.append('\u0061');
break;
case '\u01E4':
output.append('\u0067');
break;
case '\u01E5':
output.append('\u0067');
break;
case '\u01E6':
output.append('\u0067');
break;
case '\u01E7':
output.append('\u0067');
break;
case '\u01E8':
output.append('\u006B');
break;
case '\u01E9':
output.append('\u006B');
break;
case '\u01EA':
output.append('\u006F');
break;
case '\u01EB':
output.append('\u006F');
break;
case '\u01EC':
output.append('\u006F');
break;
case '\u01ED':
output.append('\u006F');
break;
case '\u01F0':
output.append('\u006A');
break;
case '\u01F4':
output.append('\u0067');
break;
case '\u01F5':
output.append('\u0067');
break;
case '\u01F8':
output.append('\u006E');
break;
case '\u01F9':
output.append('\u006E');
break;
case '\u01FA':
output.append('\u0061');
break;
case '\u01FB':
output.append('\u0061');
break;
case '\u01FE':
output.append('\u006F');
break;
case '\u01FF':
output.append('\u006F');
break;
case '\u0200':
output.append('\u0061');
break;
case '\u0201':
output.append('\u0061');
break;
case '\u0202':
output.append('\u0061');
break;
case '\u0203':
output.append('\u0061');
break;
case '\u0204':
output.append('\u0065');
break;
case '\u0205':
output.append('\u0065');
break;
case '\u0206':
output.append('\u0065');
break;
case '\u0207':
output.append('\u0065');
break;
case '\u0208':
output.append('\u0069');
break;
case '\u0209':
output.append('\u0069');
break;
case '\u020A':
output.append('\u0069');
break;
case '\u020B':
output.append('\u0069');
break;
case '\u020C':
output.append('\u006F');
break;
case '\u020D':
output.append('\u006F');
break;
case '\u020E':
output.append('\u006F');
break;
case '\u020F':
output.append('\u006F');
break;
case '\u0210':
output.append('\u0072');
break;
case '\u0211':
output.append('\u0072');
break;
case '\u0212':
output.append('\u0072');
break;
case '\u0213':
output.append('\u0072');
break;
case '\u0214':
output.append('\u0075');
break;
case '\u0215':
output.append('\u0075');
break;
case '\u0216':
output.append('\u0075');
break;
case '\u0217':
output.append('\u0075');
break;
case '\u0218':
output.append('\u0073');
break;
case '\u0219':
output.append('\u0073');
break;
case '\u021A':
output.append('\u0074');
break;
case '\u021B':
output.append('\u0074');
break;
case '\u021E':
output.append('\u0068');
break;
case '\u021F':
output.append('\u0068');
break;
case '\u0220':
output.append('\u006E');
break;
case '\u0221':
output.append('\u0064');
break;
case '\u0224':
output.append('\u007A');
break;
case '\u0225':
output.append('\u007A');
break;
case '\u0226':
output.append('\u0061');
break;
case '\u0227':
output.append('\u0061');
break;
case '\u0228':
output.append('\u0065');
break;
case '\u0229':
output.append('\u0065');
break;
case '\u022A':
output.append('\u006F');
break;
case '\u022B':
output.append('\u006F');
break;
case '\u022C':
output.append('\u006F');
break;
case '\u022D':
output.append('\u006F');
break;
case '\u022E':
output.append('\u006F');
break;
case '\u022F':
output.append('\u006F');
break;
case '\u0230':
output.append('\u006F');
break;
case '\u0231':
output.append('\u006F');
break;
case '\u0232':
output.append('\u0079');
break;
case '\u0233':
output.append('\u0079');
break;
case '\u0234':
output.append('\u006C');
break;
case '\u0235':
output.append('\u006E');
break;
case '\u0236':
output.append('\u0074');
break;
case '\u023A':
output.append('\u0061');
break;
case '\u023B':
output.append('\u0063');
break;
case '\u023C':
output.append('\u0063');
break;
case '\u023D':
output.append('\u006C');
break;
case '\u023E':
output.append('\u0074');
break;
case '\u023F':
output.append('\u0073');
break;
case '\u0240':
output.append('\u007A');
break;
case '\u1E00':
output.append('\u0061');
break;
case '\u1E01':
output.append('\u0061');
break;
case '\u1E02':
output.append('\u0062');
break;
case '\u0E03':
output.append('\u0062');
break;
case '\u0E04':
output.append('\u0062');
break;
case '\u1E05':
output.append('\u0062');
break;
case '\u1E06':
output.append('\u0062');
break;
case '\u1E07':
output.append('\u0062');
break;
case '\u1E08':
output.append('\u0063');
break;
case '\u1E09':
output.append('\u0063');
break;
case '\u1E0A':
output.append('\u0064');
break;
case '\u1E0B':
output.append('\u0064');
break;
case '\u1E0C':
output.append('\u0064');
break;
case '\u1E0D':
output.append('\u0064');
break;
case '\u1E0E':
output.append('\u0064');
break;
case '\u1E0F':
output.append('\u0064');
break;
case '\u1E10':
output.append('\u0064');
break;
case '\u1E11':
output.append('\u0064');
break;
case '\u1E12':
output.append('\u0064');
break;
case '\u1E13':
output.append('\u0064');
break;
case '\u1E14':
output.append('\u0065');
break;
case '\u1E15':
output.append('\u0065');
break;
case '\u1E16':
output.append('\u0065');
break;
case '\u1E17':
output.append('\u0065');
break;
case '\u1E18':
output.append('\u0065');
break;
case '\u1E19':
output.append('\u0065');
break;
case '\u1E1A':
output.append('\u0065');
break;
case '\u1E1B':
output.append('\u0065');
break;
case '\u1E1C':
output.append('\u0065');
break;
case '\u1E1D':
output.append('\u0065');
break;
case '\u1E1E':
output.append('\u0066');
break;
case '\u1E1F':
output.append('\u0066');
break;
case '\u1E20':
output.append('\u0067');
break;
case '\u1E21':
output.append('\u0067');
break;
case '\u1E22':
output.append('\u0068');
break;
case '\u1E23':
output.append('\u0068');
break;
case '\u1E24':
output.append('\u0068');
break;
case '\u1E25':
output.append('\u0068');
break;
case '\u1E26':
output.append('\u0068');
break;
case '\u1E27':
output.append('\u0068');
break;
case '\u1E28':
output.append('\u0068');
break;
case '\u1E29':
output.append('\u0068');
break;
case '\u1E2A':
output.append('\u0068');
break;
case '\u1E2B':
output.append('\u0068');
break;
case '\u1E2C':
output.append('\u0069');
break;
case '\u1E2D':
output.append('\u0069');
break;
case '\u1E2E':
output.append('\u0069');
break;
case '\u1E2F':
output.append('\u0069');
break;
case '\u1E30':
output.append('\u006B');
break;
case '\u1E31':
output.append('\u006B');
break;
case '\u1E32':
output.append('\u006B');
break;
case '\u1E33':
output.append('\u006B');
break;
case '\u1E34':
output.append('\u006B');
break;
case '\u1E35':
output.append('\u006B');
break;
case '\u1E36':
output.append('\u006C');
break;
case '\u1E37':
output.append('\u006C');
break;
case '\u1E38':
output.append('\u006C');
break;
case '\u1E39':
output.append('\u006C');
break;
case '\u1E3A':
output.append('\u006C');
break;
case '\u1E3B':
output.append('\u006C');
break;
case '\u1E3C':
output.append('\u006C');
break;
case '\u1E3D':
output.append('\u006C');
break;
case '\u1E3E':
output.append('\u006D');
break;
case '\u1E3F':
output.append('\u006D');
break;
case '\u1E40':
output.append('\u006D');
break;
case '\u1E41':
output.append('\u006D');
break;
case '\u1E42':
output.append('\u006D');
break;
case '\u1E43':
output.append('\u006D');
break;
case '\u1E44':
output.append('\u006E');
break;
case '\u1E45':
output.append('\u006E');
break;
case '\u1E46':
output.append('\u006E');
break;
case '\u1E47':
output.append('\u006E');
break;
case '\u1E48':
output.append('\u006E');
break;
case '\u1E49':
output.append('\u006E');
break;
case '\u1E4A':
output.append('\u006E');
break;
case '\u1E4B':
output.append('\u006E');
break;
case '\u1E4C':
output.append('\u006F');
break;
case '\u1E4D':
output.append('\u006F');
break;
case '\u1E4E':
output.append('\u006F');
break;
case '\u1E4F':
output.append('\u006F');
break;
case '\u1E50':
output.append('\u006F');
break;
case '\u1E51':
output.append('\u006F');
break;
case '\u1E52':
output.append('\u006F');
break;
case '\u1E53':
output.append('\u006F');
break;
case '\u1E54':
output.append('\u0070');
break;
case '\u1E55':
output.append('\u0070');
break;
case '\u1E56':
output.append('\u0070');
break;
case '\u1E57':
output.append('\u0070');
break;
case '\u1E58':
output.append('\u0072');
break;
case '\u1E59':
output.append('\u0072');
break;
case '\u1E5A':
output.append('\u0072');
break;
case '\u1E5B':
output.append('\u0072');
break;
case '\u1E5C':
output.append('\u0072');
break;
case '\u1E5D':
output.append('\u0072');
break;
case '\u1E5E':
output.append('\u0072');
break;
case '\u1E5F':
output.append('\u0072');
break;
case '\u1E60':
output.append('\u0073');
break;
case '\u1E61':
output.append('\u0073');
break;
case '\u1E62':
output.append('\u0073');
break;
case '\u1E63':
output.append('\u0073');
break;
case '\u1E64':
output.append('\u0073');
break;
case '\u1E65':
output.append('\u0073');
break;
case '\u1E66':
output.append('\u0073');
break;
case '\u1E67':
output.append('\u0073');
break;
case '\u1E68':
output.append('\u0073');
break;
case '\u1E69':
output.append('\u0073');
break;
case '\u1E6A':
output.append('\u0074');
break;
case '\u1E6B':
output.append('\u0074');
break;
case '\u1E6C':
output.append('\u0074');
break;
case '\u1E6D':
output.append('\u0074');
break;
case '\u1E6E':
output.append('\u0074');
break;
case '\u1E6F':
output.append('\u0074');
break;
case '\u1E70':
output.append('\u0074');
break;
case '\u1E71':
output.append('\u0074');
break;
case '\u1E72':
output.append('\u0075');
break;
case '\u1E73':
output.append('\u0075');
break;
case '\u1E74':
output.append('\u0075');
break;
case '\u1E75':
output.append('\u0075');
break;
case '\u1E76':
output.append('\u0075');
break;
case '\u1E77':
output.append('\u0075');
break;
case '\u1E78':
output.append('\u0075');
break;
case '\u1E79':
output.append('\u0075');
break;
case '\u1E7A':
output.append('\u0075');
break;
case '\u1E7B':
output.append('\u0075');
break;
case '\u1E7C':
output.append('\u0076');
break;
case '\u1E7D':
output.append('\u0076');
break;
case '\u1E7E':
output.append('\u0076');
break;
case '\u1E7F':
output.append('\u0076');
break;
case '\u1E80':
output.append('\u0077');
break;
case '\u1E81':
output.append('\u0077');
break;
case '\u1E82':
output.append('\u0077');
break;
case '\u1E83':
output.append('\u0077');
break;
case '\u1E84':
output.append('\u0077');
break;
case '\u1E85':
output.append('\u0077');
break;
case '\u1E86':
output.append('\u0077');
break;
case '\u1E87':
output.append('\u0077');
break;
case '\u1E88':
output.append('\u0077');
break;
case '\u1E89':
output.append('\u0077');
break;
case '\u1E8A':
output.append('\u0078');
break;
case '\u1E8B':
output.append('\u0078');
break;
case '\u1E8C':
output.append('\u0078');
break;
case '\u1E8D':
output.append('\u0078');
break;
case '\u1E8E':
output.append('\u0079');
break;
case '\u1E8F':
output.append('\u0079');
break;
case '\u1E90':
output.append('\u007A');
break;
case '\u1E91':
output.append('\u007A');
break;
case '\u1E92':
output.append('\u007A');
break;
case '\u1E93':
output.append('\u007A');
break;
case '\u1E94':
output.append('\u007A');
break;
case '\u1E95':
output.append('\u007A');
break;
case '\u1E96':
output.append('\u0068');
break;
case '\u1E97':
output.append('\u0074');
break;
case '\u1E98':
output.append('\u0077');
break;
case '\u1E99':
output.append('\u0079');
break;
case '\u1E9A':
output.append('\u0061');
break;
case '\u1E9B':
output.append('\u0066');
break;
case '\u1EA0':
output.append('\u0061');
break;
case '\u1EA1':
output.append('\u0061');
break;
case '\u1EA2':
output.append('\u0061');
break;
case '\u1EA3':
output.append('\u0061');
break;
case '\u1EA4':
output.append('\u0061');
break;
case '\u1EA5':
output.append('\u0061');
break;
case '\u1EA6':
output.append('\u0061');
break;
case '\u1EA7':
output.append('\u0061');
break;
case '\u1EA8':
output.append('\u0061');
break;
case '\u1EA9':
output.append('\u0061');
break;
case '\u1EAA':
output.append('\u0061');
break;
case '\u1EAB':
output.append('\u0061');
break;
case '\u1EAC':
output.append('\u0061');
break;
case '\u1EAD':
output.append('\u0061');
break;
case '\u1EAE':
output.append('\u0061');
break;
case '\u1EAF':
output.append('\u0061');
break;
case '\u1EB0':
output.append('\u0061');
break;
case '\u1EB1':
output.append('\u0061');
break;
case '\u1EB2':
output.append('\u0061');
break;
case '\u1EB3':
output.append('\u0061');
break;
case '\u1EB4':
output.append('\u0061');
break;
case '\u1EB5':
output.append('\u0061');
break;
case '\u1EB6':
output.append('\u0061');
break;
case '\u1EB7':
output.append('\u0061');
break;
case '\u1EB8':
output.append('\u0065');
break;
case '\u1EB9':
output.append('\u0065');
break;
case '\u1EBA':
output.append('\u0065');
break;
case '\u1EBB':
output.append('\u0065');
break;
case '\u1EBC':
output.append('\u0065');
break;
case '\u1EBD':
output.append('\u0065');
break;
case '\u1EBE':
output.append('\u0065');
break;
case '\u1EBF':
output.append('\u0065');
break;
case '\u1EC0':
output.append('\u0065');
break;
case '\u1EC1':
output.append('\u0065');
break;
case '\u1EC2':
output.append('\u0065');
break;
case '\u1EC3':
output.append('\u0065');
break;
case '\u1EC4':
output.append('\u0065');
break;
case '\u1EC5':
output.append('\u0065');
break;
case '\u1EC6':
output.append('\u0065');
break;
case '\u1EC7':
output.append('\u0065');
break;
case '\u1EC8':
output.append('\u0069');
break;
case '\u1EC9':
output.append('\u0069');
break;
case '\u1ECA':
output.append('\u0069');
break;
case '\u1ECB':
output.append('\u0069');
break;
case '\u1ECC':
output.append('\u006F');
break;
case '\u1ECD':
output.append('\u006F');
break;
case '\u1ECE':
output.append('\u006F');
break;
case '\u1ECF':
output.append('\u006F');
break;
case '\u1ED0':
output.append('\u006F');
break;
case '\u1ED1':
output.append('\u006F');
break;
case '\u1ED2':
output.append('\u006F');
break;
case '\u1ED3':
output.append('\u006F');
break;
case '\u1ED4':
output.append('\u006F');
break;
case '\u1ED5':
output.append('\u006F');
break;
case '\u1ED6':
output.append('\u006F');
break;
case '\u1ED7':
output.append('\u006F');
break;
case '\u1ED8':
output.append('\u006F');
break;
case '\u1ED9':
output.append('\u006F');
break;
case '\u1EDA':
output.append('\u006F');
break;
case '\u1EDB':
output.append('\u006F');
break;
case '\u1EDC':
output.append('\u006F');
break;
case '\u1EDD':
output.append('\u006F');
break;
case '\u1EDE':
output.append('\u006F');
break;
case '\u1EDF':
output.append('\u006F');
break;
case '\u1EE0':
output.append('\u006F');
break;
case '\u1EE1':
output.append('\u006F');
break;
case '\u1EE2':
output.append('\u006F');
break;
case '\u1EE3':
output.append('\u006F');
break;
case '\u1EE4':
output.append('\u0075');
break;
case '\u1EE5':
output.append('\u0075');
break;
case '\u1EE6':
output.append('\u0075');
break;
case '\u1EE7':
output.append('\u0075');
break;
case '\u1EE8':
output.append('\u0075');
break;
case '\u1EE9':
output.append('\u0075');
break;
case '\u1EEA':
output.append('\u0075');
break;
case '\u1EEB':
output.append('\u0075');
break;
case '\u1EEC':
output.append('\u0075');
break;
case '\u1EED':
output.append('\u0075');
break;
case '\u1EEE':
output.append('\u0075');
break;
case '\u1EEF':
output.append('\u0075');
break;
case '\u1EF0':
output.append('\u0075');
break;
case '\u1EF1':
output.append('\u0075');
break;
case '\u1EF2':
output.append('\u0079');
break;
case '\u1EF3':
output.append('\u0079');
break;
case '\u1EF4':
output.append('\u0079');
break;
case '\u1EF5':
output.append('\u0079');
break;
case '\u1EF6':
output.append('\u0079');
break;
case '\u1EF7':
output.append('\u0079');
break;
case '\u1EF8':
output.append('\u0079');
break;
case '\u1EF9':
output.append('\u0079');
break;
case '\u00C6': // Æ
output.append("AE");
break;
case '\u0152':
output.append("OE");
break;
case '\u00DE':
output.append("TH");
break;
case '\u00E6': // æ
output.append("ae");
break;
case '\u0153':
output.append("oe");
break;
default:
output.append(input.charAt(i));
break;
}
}
return output.toString();
}
public final static String cleanPonctuation(String input) {
final StringBuffer output = new StringBuffer();
for (int i = 0; i < input.length(); i++) {
switch (input.charAt(i)) {
case '(':
output.append("");
break;
case ')':
output.append("");
break;
case '&':
output.append(" ");
break;
case '[':
output.append("");
break;
case ']':
output.append("");
break;
case ',':
output.append(" ");
break;
case ';':
output.append(" ");
break;
case ':':
output.append(" ");
break;
case '/':
output.append(" ");
break;
case '-':
output.append(" ");
break;
case '=':
output.append(" ");
break;
case '.':
output.append("");
break;
case '@':
output.append(" ");
break;
default:
output.append(input.charAt(i));
break;
}
}
return output.toString().trim();
}
public static String filter(String input) {
input = input.toLowerCase();
String[] words = input.split(" ");
for (int i = 0; i < words.length; i++) {
words[i] = removeApostrophe(words[i]);
words[i] = removeAccents(words[i]);
}
return StringUtils.join(words, " ");
}
public static String cleanAll(String in) {
if (in == null) {
return null;
}
in = cleanPonctuation(in);
in = removeAccents(in);
in = removeApostrophe(in);
return in;
}
}