Manchmal möchten Sie nicht einfach die Zeichen entfernen, sondern nur die Akzente. Ich habe die folgende Dienstprogrammklasse entwickelt, die ich in meinen Java REST-Webprojekten verwende, wenn ich einen String in eine URL einfügen muss:
import java.text.Normalizer;
import java.text.Normalizer.Form;
import org.apache.commons.lang.StringUtils;
public abstract class TextUtils {
private static String[] searchList = { "Ä", "ä", "Ö", "ö", "Ü", "ü", "ß" };
private static String[] replaceList = { "Ae", "ae", "Oe", "oe", "Ue", "ue",
"sz" };
public static String normalize(String s) {
if (s == null)
return null;
String n = null;
n = StringUtils.replaceEachRepeatedly(s, searchList, replaceList);
n = Normalizer.normalize(n, Form.NFD).replaceAll("[^\\p{ASCII}]", "");
return n;
}
public static String slugify(String s) {
if (s == null)
return null;
String n = normalize(s);
n = StringUtils.lowerCase(n);
n = n.replaceAll("[\\s.:;&=<>/]", "");
return n;
}
}
Als Deutschsprachiger habe ich auch den richtigen Umgang mit deutschen Umlauten aufgenommen - die Liste sollte für andere Sprachen leicht zu erweitern sein.
HTH
BEARBEITEN: Beachten Sie, dass es möglicherweise unsicher ist, den zurückgegebenen String in eine URL aufzunehmen. Sie sollten es mindestens in HTML codieren, um XSS-Angriffe zu verhindern.