Akzentbuchstaben in akzentfreie Variante umwandeln

Status
Nicht offen für weitere Antworten.

BlackCraze

Mitglied
Hallo an alle,

ich muss in meiner Logik aus Vor- und Nachnamen einen Benutzernamen generieren.
Dabei sollen eventuelle Akzentbuchstaben in ihre jeweils akzentfreien Äqivalente umgewandelt werden. Gibt es dafür irgendetwas vorgefertigtes oder muss ich da wirklich für jede Möglichkeit alles ersetzen?

Code:
...
vorname = vorname.replaceAll("Â","A")
vorname = vorname.replaceAll("À","A")
vorname = vorname.replaceAll("Á","A")
...

Würde mir nicht so gut gefallen :)
Hat jemand ne bessere Lösung parat?

Danke und MfG
Craze
 
S

SlaterB

Gast
zumindest wäre hier vielleicht günstiger, den String in ein char-Array zu überführen und char-weise zu vergleichen + zu ersetzen,

in beiden Varianten läßt sich der Code minimieren, wenn du zwei Arrays hast mit alten chars/Strings + neuen chars/ Strings in passender Reihenfolge
-> mit Schleife verarbeiten
 

BlackCraze

Mitglied
meinst du so?
ist zwar etwas schöner - aber irgendwie befriedigt mich das nicht so richtig. Kann mir nicht vorstellen, dass es dafür nichts fertiges gibt.

Aber danke erstmal :)

Code:
public class StringHelper {

    public static String replaceAccents( String in ) {
        char[] fnChars = in.toCharArray();

        char[] from = { 'é', 'ú', 'í', 'ó', 'á', 'ý',//
                'è', 'ù', 'ì', 'ò', 'à', 'ý',//
                'ê', 'û', 'î', 'ô', 'â',//
                'É', 'Ú', 'Í', 'Ó', 'Á', 'Ý',//
                'È', 'Ù', 'Ì', 'Ò', 'À',//
                'Ê', 'Û', 'Î', 'Ô', 'Â' //
        };
        char[] to = { 'e', 'u', 'i', 'o', 'a', 'y',//
                'e', 'u', 'i', 'o', 'a', 'y',//
                'e', 'u', 'i', 'o', 'a',//
                'E', 'U', 'I', 'O', 'A', 'Y',//
                'E', 'U', 'I', 'O', 'A',//
                'E', 'U', 'I', 'O', 'A' //
        };

        for (int i = 0; i < fnChars.length; i++) {
            for (int j = 0; j < from.length; j++) {
                if (fnChars[i] == from[j]) {
                    fnChars[i] = to[(int) Math.floor( j )];
                }
            }
        }

        return new String( fnChars );
    }

}

::: EDIT :::
Das sind jetzt alle Akzentbuchstaben für die Akzente ´`^ in ISO-8859-1

Würde mir trotzdem für ne bessere Lösung interessieren - vor allem eine die UTF-Conform ist. Da sind ja noch wesentlich mehr Zeichen drin.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben