![]() |
AW: Replace
Zitat:
Eventzell kann man die Funktionsdefinition wie folgt ändern, damit das klarer wird:
Delphi-Quellcode:
function myCharReplace(text:string;alt:char;neu:string): string;
Spaß beiseite: Da man ja kein Replace benutzen soll, würde ich folgern, dass auch so Dinge wie Pos, Copy usw. die man sonst vielleicht benutzen würde auch nicht gebraucht werden sollen. Dementsprechend müsste das Problem durch eine Verschachtelung von zwei Schleifen gelöst werden: Schleife 1 sucht den ersten Buchstaben von alt in text, wenn gefunden vergleicht schleife 2 alle Buchstaben in text ab dieser Stelle mit allen Buchstaben in alt. Stimmt alles überein, haben wir einen Treffer usw. P.S.: Wieso werden nach einem einzeiligen Delphi-Code-Block (fast) alle Zeilenumbrüche ignoriert? |
AW: Replace
Zitat:
Code:
Wobei die Frage ist ob "case" schon bekannt ist oder ob es mit "if..then..else" gelöst werden muß.
for i:= 1 to length(zeile) do
case zeile[i] of 'ü' : result:=result+'ue'; 'ö' : result:=result+'oe'; else result:=result+zeile[i]; Gruß K-H |
AW: Replace
Wenn man diese Replace-Funktion etwas intelligenter macht
Delphi-Quellcode:
könnte man sich damit auch eine generelle Umwandlung bauen, die auch von ae wieder zurück nach ä leisten kann.
function DoReplaceStr( const AStr: string; out ReplacedStr : string ) : Boolean;
begin if not Lookup.TryGetValue( AStr, ReplacedStr ) then if Enumerable<string>( Lookup.Keys ).Any( function( const key: string ) : Boolean begin Result := key.StartsWith( AStr ); end ) then Exit( False ) else ReplacedStr := AStr; Result := True; end; TReplaceCallback = reference to function( const AStr: string; out ReplacedStr: string ) : Boolean; function ReplaceStr( const AStr : string; ReplaceCallback : TReplaceCallback ) : string; var c: Char; Buffer, Replaced : string; begin Result := ''; Buffer := ''; for c in AStr do begin Buffer := Buffer + c; if ReplaceCallback( ABuffer, Replaced ) then begin Result := Result + Replaced; Buffer := ''; end; end; Result := Result + Buffer; end; :arrow: Ich weiß, geht weit über das Ziel hinaus ... aber ich will ja auch nicht seine Hausaufgaben machen :stupid: |
AW: Replace
Zitat:
MfG Dalai |
AW: Replace
zeile[i] ist ein case of char.
|
AW: Replace
Mmh, ich nahm an, dass
Delphi-Quellcode:
immer ordinale Typen haben will, aber es funktioniert tatsächlich, wenn die Auswahlmöglichkeiten Chars sind. Interessant, wusste ich bisher nicht :).
case
MfG Dalai |
AW: Replace
Zitat:
|
AW: Replace
Zitat:
War erst skeptisch, aber kann's wirklich übersichtlich machen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 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