Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Vokal ersetzen (https://www.delphipraxis.net/167676-vokal-ersetzen.html)

Axl 12. Apr 2012 12:10

Vokal ersetzen
 
Hallo,

ich habe ein Problem.
Ich bin zwar erst neu hier, doch ich hoffe ihr könnt mir helfen.

Ich soll alle Vokale eines Textes den ich zuvor geöffnet habe, durch einen anderen Vokal ersetzen, den ich in einem Editfeld eingebe.
Das Hochladen des Textes (in Listbox) habe ich schon.
Ich weis nur nicht wie ich die Vokal (muss nur die in der 1. Zeile ändern) ändere.

Kann mir jemand helfen?

DeddyH 12. Apr 2012 12:12

AW: Vokal ersetzen
 
Hallo und Willkommen in der DP :dp:,

langsame, dafür einfache Möglichkeit: jeden Vokal mit Delphi-Referenz durchsuchenStringReplace ersetzen. Ansonsten kann man sich da mit einer Schleife schnell selbst was basteln.

Bummi 12. Apr 2012 12:16

AW: Vokal ersetzen
 
Delphi-Quellcode:
 Listbox1.Items[0] := StringReplace(Listbox1.Items[0], WasAuchImmer,Edit1.Text,[rfReplaceAll]);
gegf. wegen Großkeinschreibung 2 mal mit doppeltem UpperCase

Axl 12. Apr 2012 12:37

AW: Vokal ersetzen
 
Mit einer Schleife habe ich es auch schon versucht doch die funktioniert nicht richtig.
Ich wollte es mit IF A,E,I,O,U und in klein geschrieben halt machen.
Wie kann ich jetzt das Editfeld einbauen?

Mein Quelltext:
v soll der eingegebene Vokal sein.

FOR z:=1 TO LENGTH(txt[z]) DO
IF (txt[z]= 'a')or (txt[z]= 'e')or (txt[z]= 'i') or (txt[z]= 'o') or (txt[z]= 'u')
or (txt[z]= 'A') or (txt[z]= 'E') or (txt[z]= 'I') or (txt[z]= 'O') or (txt[z]= 'U')
THEN txt[z]:=v;

DeddyH 12. Apr 2012 12:43

AW: Vokal ersetzen
 
Gar nicht. Du willst ja nicht das Edit ändern, sondern den String, der da drin steht. Schreib Dir also eine Funktion, wo ein String reinkommt, bearbeitet wird und als Result zurückgegeben wird. Z.B.:
Delphi-Quellcode:
function ReplaceChar(const s: string; Old, New: Char): string;
begin
  Result := StringReplace(s, Old, New, [rfReplaceAll]);
end;
Das ist zwar weder schön noch schnell, sollte aber funktionieren.

[edit] Achja, aufrufen könntest Du das dann so:
Delphi-Quellcode:
Edit1.Text := ReplaceChar(Edit1.Text, 'a', 'u');
[/edit]

Bummi 12. Apr 2012 12:48

AW: Vokal ersetzen
 
Delphi-Quellcode:
var
 rep:String;
begin
 rep := 'ö';
 Listbox1.Items[0] :=
         StringReplace(
         StringReplace(Listbox1.Items[0], AnsiLowerCase(rep) ,AnsiLowerCase(Edit1.Text),[rfReplaceAll])
         , AnsiUpperCase(rep) ,AnsiUpperCase(Edit1.Text),[rfReplaceAll])
end;

Axl 12. Apr 2012 12:53

AW: Vokal ersetzen
 
Ich will ja nur in ein Editfeld zu Beispiel u eingeben. In der Listbox sollten dann alle Vokale durch das u ersetzt werden.

Bummi 12. Apr 2012 13:00

AW: Vokal ersetzen
 
Sorry, ich hatte übersehen daß es um alle Vokale geht
Delphi-Quellcode:
Function ReplaceAllVocals(const s:String;New:Char):String;
var
 i:Integer;
begin
    Result := s;
    For i := 1 to Length(s) do
      case s[i] of
         'a','e','u','i','o','ü','ö','ä':Result[i] := AnsiLowerCase(New)[1];
         'A','E','U','I','O','Ü','Ö','Ä':Result[i] := AnsiUpperCase(New)[1];
      end;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
    Showmessage(ReplaceAllVocals('Was Auch immer hier stehen könnte','o'));
end;

DeddyH 12. Apr 2012 13:01

AW: Vokal ersetzen
 
Dann übergib die entprechenden Eigenschaften als Parameter an die Funktion.

p80286 12. Apr 2012 13:06

AW: Vokal ersetzen
 
Delphi-Quellcode:
FOR z:=1 TO LENGTH(txt) DO
IF (txt[z]= 'a')or (txt[z]= 'e')or (txt[z]= 'i') or (txt[z]= 'o') or (txt[z]= 'u')
 or (txt[z]= 'A') or (txt[z]= 'E') or (txt[z]= 'I') or (txt[z]= 'O') or (txt[z]= 'U')
THEN txt[z]:=v;
so sollte es klappen.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz