ehh leute...?
wenn ich dich richtig verstehe willst du doch nen ganzen satz überprüfen:
Also aus
s := 'Heute ist ein schöner Tag!';
soll dannn
s2 := 'Heute ist ein schöer Tag!'
werden?
Wenn ja:
dann musst du ja auf jeden fall das teil einmal für jeden Buchstaben & für jedes zu erstzende Zeichen druchgehen:
ok dann man ein bissel code
Delphi-Quellcode:
(*
angenommen hier steht der ganze krams von der Form der dann irgendwann mal mit
end; endet ^^
*)
// da machen wir uns mal nen eigenen kleinen verbund typ...
// ist so als wenn man ein paar variablen mit "klebeband" zu einem neuen namen "zusammenklebt"
// der name hier ist einfach mal replace... kannst du aber nennen wie du willst
type replace = record
was : String; // ok wir müssen uns ja auf jeden fall merken, was wir erstzen wollen
durch : String; // und klar... natürlich auch wodurch
end;
var
liste : Array[0..2] of replace; // so da gibts ja bestimmt nicht nur eine sache, die wir erstzen wollen
// also nicht nur ä sondern auch z.B. ö
// die liste ist erst mal auf max. 3 -> (0, 1, 2) einträge ausgelegt
// wenn du mehr brauchst einfach die "hinter" zahl erhöhen (die obere grenze)
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); // so wenn das "formular gemacht" wird
begin
liste[0].was := 'ä'; // soll er sich merken, dass im ersten (ACHTUNG 0 ist der erste!) das ä steht
liste[0].durch := 'ä'; // dass soll dann durch ein "ä" ausgetauscht werden
liste[1].was := 'ü'; // das zweite in der liste (ACHTUNG index = 1!)
liste[1].durch := 'ü'; // usw. sollte einigermaßen selbst erklärend sein
liste[2].was := 'ö';
liste[2].durch := 'ö';
end;
(*
unsere funktion heisst einmalAllesBitte
bekommt einen String der "aufgeräumt" werden soll
und soll uns einen "sauberen" string zurückgeben //seltsame formulierung ^^
diese eigene funktion gehört zum objekt TForm1 (deswegen steht das auch davor)
die musst du oben auch nochmal eintragen!
da solte dann so was stehen
private
function einmalAllesBitte(str: String): String;
{ Private declarations }
public
und jupp da lässt man das Obj wieder weg... weil das ja schon in "seinem bereich" steht
*)
function TForm1.einmalAllesBitte(str : String) : String; // so nun kommt der "dicke brocken"
var // so in unser schönen funktion gibt es eigene nur hier gültige variablen
i : Integer; // eine zahl zum druchlaufen der liste
res : String; // und das ergebnis, zwischengelagert in res
begin
res := str; // so erst mal merken wir uns das ungewaschene in res
for i := 0 to length(liste) - 1 do // dann gehen wir jedes zu erstzende einzelteil in der liste durch
res := StringReplace(res, liste[i].was, liste[i].durch, [rfReplaceAll]);
(*
res := "..." ok im resultat soll das gewaschene sein
und zwar das, was die funktion StringReplace zurück gibt (das ist ein delphi hausmittel)
was bekommt die StringReplace eigentlich?
ok klar 1. worin sie was erstzen soll
2. was ersetzt werden soll
3. wodurch das gefundene ersetzt werden soll
4. ein Schalter (Flag) der den modus einstellt; in dem fall soll es alle vorkommnisse erstzten
(kann auch noch anders geschaltet werden aber das wäre jetzt zu viel des guten!)
so das läuft jetzt ja alle durch...
*)
result := res; // so wenn wir fertig sind... dann kann man das auch wieder zurückgeben
end;
so...
benutztung ist dann wie folgt
ergebnis := einmalAllesBitte('Der super gemeine text, der so umlaute oder so enthält... oder auch nicht...');
hat den großen vorteil, dass du das nicht alles buchstabe weise durchlaufen musst...
und dass es recht gut zu verwalten ist...
Und kurz ist es auch noch ^^
hoffe ich konnte helfen und habe dich nicht zu sehr erschlagen
cya
Corelgott
[edit]
aso:
der code ist nicht getestet... der ist einfach mal so frei schnautze...
also bugs behalet ich mir mal vor...
[/edit]
wer Rächtschraibfehler findet daaf sie behalten...