Einzelnen Beitrag anzeigen

Ackerjan

Registriert seit: 4. Jun 2007
Ort: Potsdam
17 Beiträge
 
Delphi 2009 Enterprise
 
#1

Ersetzen von Umlauten bei groß geschriebenen Wörtern

  Alt 2. Feb 2015, 10:24
Ich suche nach dem richtigen Ansatz für das folgende Problem. Ich habe einen Text, in dem bewusst einige Wörter in Großbuchstaben geschrieben werden. Nun müssen die Umlaute aus dem Text ersetzt werden. Dafür verwende ich die angegebene Funktion.

In Österreich wird kein SÜßHOLZ hergestellt.

Code:
function OhneUmlaute(_string: String): String;
begin
    _string := ansiReplaceStr(_string, 'ä', 'ae');
    _string := ansiReplaceStr(_string, 'ü', 'ue');
    _string := ansiReplaceStr(_string, 'ö', 'oe');
    _string := ansiReplaceStr(_string, 'Ä', 'Ae');
    _string := ansiReplaceStr(_string, 'Ü', 'Ue');
    _string := ansiReplaceStr(_string, 'Ö', 'Oe');
    _string := ansiReplaceStr(_string, 'ß', 'ss');
    Result := _string;
end;
In Oesterreich wird kein SUessHOLZ hergestellt.

Gewünscht wird allerdings der folgende Text

In Oesterreich wird kein SUESSHOLZ hergestellt.

Mein erster Ansatz wäre, den Text von vorne nach hinten durchzugehen und für Ä,Ü,Ö,ß zu prüfen ob das Zeichen davor Groß ist, dann ersetze zu AE,UE,OE,SS. Ist der Buchstabe davor nicht vorhanden oder ist es kein Buchstabe dann prüfe den Buchstaben danach und ersetzte entsprechend.

Hat da jemand einen besseren Ansatz?
Vielleicht mit regulären Ausdrücken?
Gibt es da schon was?
Jan
Niemals aufgeben, niemals kapitulieren! - galaxy quest
  Mit Zitat antworten Zitat