Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Vokale entfernen (https://www.delphipraxis.net/156580-vokale-entfernen.html)

Fussel9 8. Dez 2010 14:57

AW: Vokale entfernen
 
Viele Wege führen nach Rom...

mkinzler 8. Dez 2010 15:09

AW: Vokale entfernen
 
Zitat:

Zitat von DeddyH (Beitrag 1067109)
Wieso? Es wird ja keine For-Schleife verwendet, da ist das in der Tat notwendig.

Wenn du eine normale Schleife nimmst, werden doppelte Vokale auch nicht erkannt.

DeddyH 8. Dez 2010 15:14

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).

mkinzler 8. Dez 2010 15:18

AW: Vokale entfernen
 
Ich habe den ursprünglichen Code angesehen, da fehlte das
Delphi-Quellcode:
i := i - 1;
aber eine umgekehrte Schleife würde dies auch überflüssig machen

DeddyH 8. Dez 2010 15:24

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;

Connor Temple 8. Dez 2010 16:00

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...

Sir Rufo 8. Dez 2010 16:20

AW: Vokale entfernen
 
So, dann mal passend formatiert ...
Delphi-Quellcode:
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;
... und jetzt mal ein wenig optimiert ...
Delphi-Quellcode:
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;
... und dann noch mal so, wie es sich eigentlich gehört :mrgreen:
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.
Seite 3 von 3     123   

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