![]() |
Umlaute in string erstetzen
hallo zusammen
ich habe einen String in dem ich die Umlaute folgendermassen ersetzen möchte: stringreplace(bezeichnung,'ä','ae',[rfReplaceAll, rfIgnoreCase]); leider klappt das nicht, das ü wird im Debuger als #252 angezeigt. was mache ich falsch ? EDIT: bezeichnung:= stringreplace(bezeichnung,'ä','ae',[rfReplaceAll, rfIgnoreCase]); |
AW: Umlaute in string erstetzen
Wie wäre es mit auswertung des Rückgabewertes?
Code:
und ü hat den Ordinalwert #252, das ist dann auch ok.
bezeichnung := stringreplace(bezeichnung,'ä','ae',[rfReplaceAll, rfIgnoreCase]);
|
AW: Umlaute in string erstetzen
Zitat:
das ä wurde aber trotzdem nicht durch ae ersetzt :-( |
AW: Umlaute in string erstetzen
Eigentlich sollte es klappen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var bezeichnung: string; begin bezeichnung := 'Öktöberfest in München. Da tränkt man viel Bier.'; bezeichnung := stringreplace(bezeichnung,'ä','ae',[rfReplaceAll, rfIgnoreCase]); bezeichnung := stringreplace(bezeichnung,'ü','ue',[rfReplaceAll, rfIgnoreCase]); bezeichnung := stringreplace(bezeichnung,'ö','oe',[rfReplaceAll, rfIgnoreCase]); ShowMessage(bezeichnung); end; |
AW: Umlaute in string erstetzen
Ich lese gerade Freepascal!
Kann es sein das hier diese Funktion einen fehler hat? In Freepascal/Lazarus ist man ja auf die Glorreiche Idee gekommen im Gegensatz zu allen anderen relevanten modernen Programmiersprachen/Frameworks wie .NET/Java/Delphi (:-) Unicode rein per UTF8 zu realiseren und keinen Wide/Unicodestring einzuführen/durchzuziehen. Da gab schon öfter einige Funktionen die das dann nicht berücksichtigt hatten. Evtl erwartet ja diese Funktion unter FP/lazarus einen UTF8-String statt eines ANSI-Strings. |
AW: Umlaute in string erstetzen
ja mit deinem Oktoberfest klappt es auch :-(
Mein Wert kommt aber aus der DB und da klappt es leider nicht, bezeichnung:= orteZTable.FieldByName('bezeichnung').asstring; das DB feld ist folgendermassen definiert : BEZEICHNUNG CHAR(100) CHARACTER SET ISO8859_1 COLLATE DE_DE, |
AW: Umlaute in string erstetzen
Zitat:
EDIT: super, so funktionierts :-) Ich danke euch |
AW: Umlaute in string erstetzen
Zitat:
|
AW: Umlaute in string erstetzen
Ich danke euch
|
AW: Umlaute in string erstetzen
Ansonsten hätte ich dir eine meiner Funktionen empfohlen. Die habe ich damals bei Delphi 3 geschrieben, die hatte kein StringReplace. Die Funktion ist zwar für Strings, aber ich schätze die kann man für seine Bedürfnisse anpassen:
Delphi-Quellcode:
type
TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase); //Wichtig!!! Global setzen function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string; function PosEx(Substr: string; S: string; Flag: TReplaceFlags): Integer; begin if rfIgnoreCase in Flag then Result := Pos(AnsiUpperCase(Substr), AnsiUpperCase(S)) else Result := Pos(Substr, S); end; var S2: String; begin S2 := S; Result := ''; while Length(S2) > 0 do begin if PosEx(OldPattern, S2, Flags) > 0 then begin Result := Result + Copy(S2, 1, PosEx(OldPattern, S2, Flags) - 1); Delete(S2, 1, PosEx(OldPattern, S2, Flags) + Length(OldPattern) - 1); Result := Result + NewPattern; end else begin Result := Result + S2; Delete(S2, 1, Length(S2)); end; if not (rfReplaceAll in Flags) then begin Result := Result + S2; Delete(S2, 1, Length(S2)); end; end; end; {Popov} |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 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-2025 by Thomas Breitkreuz