![]() |
Umlaute in String ersetzen
Hi,
gibt es schon eine Funktion die mir Umlaute wie ß, ö, ü, ä, usw. in einen String mit ss, oe, ue, ae ersetzt? Hintergrund: Ich lese Bezeichnungen und Namen aus einer Datei und weiß diese Werte dynamisch generierten Komponenten zu. Solche Zeichen sind aber nicht als Komponentenname erlaubt. Kennt jemand so eine Funktion? Ansonsten muss ich mir die wohl selber bauen. |
Re: Umlaute in String ersetzen
stringreplace ist das stichwort. Dazu musst du aber die unit "strutils" einbinden.
|
Re: Umlaute in String ersetzen
Zitat:
|
Re: Umlaute in String ersetzen
Dann fällt mir eigentlich nur noch sowas ein:
Delphi-Quellcode:
Oder gibt es was eleganteres?
function ErsetzeUmlaute(s: string): string;
var i: integer; begin for i := 1 to length(s) do begin Case s[i] of 'ä': result := result+'ae'; 'ü': result := result+'ue'; 'ö': result := result+'oe'; 'ß': result := resultü'ss'; else: result := resultüs[i]; end; end; end; |
Re: Umlaute in String ersetzen
Moin Andreas,
ist auch sichergestellt, dass es sich nur um diese Sonderzeichen handeln kann, und nicht etwa auch é usw. dort auftauchen können? |
Re: Umlaute in String ersetzen
Zitat:
|
Re: Umlaute in String ersetzen
Hallo Andreas,
vielleicht findest du in folgendem thread noch ein paar Denkanstöße: ![]() Grüße vom marabu |
Re: Umlaute in String ersetzen
Hallo,
in meiner Frage [dp]StringReplace automatisch - was geht schnell und einfach?[/dp] wurde Folgendes empfohlen:
[/edit]Nachtrag (@Manuel 3_of_8 in #9) Meine Frage war allgemeiner formuliert worden, und dort werden bei der Suche Strings (nicht Chars) verwendet. Bei der Suche nach Chars kann man es natürlich mit einer Schleife erledigen. |
Re: Umlaute in String ersetzen
Das dürfte recht langsam sein, da die Schleife immer wieder für jeden Umlaut durchlaufen wird und nicht einmal für alle zusammen.
|
Re: Umlaute in String ersetzen
Delphi-Quellcode:
Ich habs mal etwas erweitert. Ich denke aber, dass es nicht besonders schnell ist wegen "result:=result+...".
function ErsetzeUmlaute(s: string): string;
var i,j: integer; const AnzUmlaute =7; Umlaute: Array[0..AnzUmlaue-1] of char = ('ä','ö','ü','ß','Ä','Ö','Ü'); Ersetzt: Array[0..AnzUmlaue-1] of string = ('ae','oe','ue','ss','Ae','Ue','Oe'); begin for i := 1 to length(s) do begin for j := 0 to anzumlaute-1 do begin if s[i] = Umlaute[j] then begin result := result+umlaute[j]; break; end else result := result+s[i]; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz