![]() |
AW: Vokale entfernen
Viele Wege führen nach Rom...
|
AW: Vokale entfernen
Zitat:
|
AW: Vokale entfernen
Ich kann Dir nicht folgen: wenn ein Vokal gefunden wird, wird er gelöscht und der Zeichenindex dekrementiert, anschließend in jedem Fall inkrementiert, so dass er auf dem nächsten Zeichen steht. Da sollten doch auch doppelte Vokale korrekt erkannt werden (gut, über das hin und her kann man sich streiten, funktionieren sollte es aber).
|
AW: Vokale entfernen
Ich habe den ursprünglichen Code angesehen, da fehlte das
Delphi-Quellcode:
aber eine umgekehrte Schleife würde dies auch überflüssig machen
i := i - 1;
|
AW: Vokale entfernen
Ich würde das ja ganz anders machen, allerdings habe ich dann kein Delete drin *g*:
Delphi-Quellcode:
function WithoutVocals(const s: string): string;
var SrcIndex, DestIndex: integer; begin SetLength(Result, Length(s)); DestIndex := 0; for SrcIndex := 1 to Length(s) do if not (Upcase(s[SrcIndex]) in ['A','E','I','O','U']) then begin inc(DestIndex); Result[DestIndex] := s[SrcIndex]; end; SetLength(Result, DestIndex); end; |
AW: Vokale entfernen
@DeddyH
So wie du es machst versteh ich das echt gar nicht, wir fangen ja auch grade erst mit Delphi an, da ist das okay... |
AW: Vokale entfernen
So, dann mal passend formatiert ...
Delphi-Quellcode:
... und jetzt mal ein wenig optimiert ...
procedure TForm1.EntvokalisierenClick(Sender: TObject);
var Text : string; i : integer; begin Text := NormalText.Text; i := 1; while i <= Length( Text ) do begin case Text[ i ] of 'A','E','I','O','U', 'a','e','i','o','u' : begin Delete ( Text, i, 1 ) ; i := i - 1 ; end; end; i := i + 1 ; AusgabeText.Text := Text; end; end;
Delphi-Quellcode:
... und dann noch mal so, wie es sich eigentlich gehört :mrgreen:
procedure TForm1.EntvokalisierenClick(Sender: TObject);
var Text : string; i : integer; begin Text := NormalText.Text; i := 1; while i <= Length( Text ) do begin case Text[ i ] of 'A','E','I','O','U', 'a','e','i','o','u' : Delete ( Text, i, 1 ) ; else // case i := i + 1; end; // case end; // while AusgabeText.Text := Text; end; wegen der Trennung von Code und Oberfläche (EVA)
Delphi-Quellcode:
function Entvokalisieren( const AStr : string ) : string;
var i : integer; begin Result := AStr; i := 1; while i <= Length( Result ) do begin case Result[ i ] of 'A','E','I','O','U', 'a','e','i','o','u' : Delete ( Result, i, 1 ) ; else // case i := i + 1; end; // case end; // while end; procedure TForm1.EntvokalisierenClick(Sender: TObject); begin AusgabeText.Text := Entvokalisieren( NormalText.Text ); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 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