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?