Entwickler-Ecke
Sonstiges (Delphi) - StringReplace mit WILDCARDS
TheUnknown - Do 04.02.10 11:39
Titel: StringReplace mit WILDCARDS
Hallo,
mir reisst langsam die Geduld, ich krieg das einfach nicht hin, mir eine Routine zusammenzuschreiben, die mich eine StringReplace-Funktion nutzen lässt, die auch Wildcards wie * oder ? akzeptiert.
Anstatt also z.B.
StringReplace(STRING, 'Radfahrerhelm', 'Ersetzt', []);
möchte ich lieber z.B.
StringReplace(STRING, '*fahr*', 'Ersetzt', []);
benutzen können, um nicht alle mögliche Möglichkeiten separat durchgehen zu müssen, in denen die Zeichenfolge "fahr" vorkommt. Natürlich mit den Optionen "rfReplaceAll" und "rfIgnoreCase"... Das kann ja nicht so schwer sein, aber ich bekomme das einfach nicht hin.
Bei den Schweizern habe ich eine Möglichkeit gefunden, zwei Strings mit Wildcards zu vergleichen, aber auch hier schaffe ich es nicht, den für mich wichtigen so Teil entnehmen, dass ich meine Funktion hinbekomme.
Wie muss so eine Funktion aussehen? :)
Narses - Do 04.02.10 12:41
Moin!
TheUnknown hat folgendes geschrieben : |
| Das kann ja nicht so schwer sein, aber ich bekomme das einfach nicht hin. |
Oh doch, das hat ein paar ziemlich ekelige Haken, dieses Problem... :?
Aber warum das Rad neu erfinden, schau dir mal
TRegExpr [
http://www.regexpstudio.com/TRegExpr/TRegExpr.html] an, das kann das alles schon und funktioniert bereits. ;)
cu
Narses
TheUnknown - Do 04.02.10 12:44
Der Link funktioniert leider nicht! :)
Tastaro - Do 04.02.10 12:45
Hmm - was soll er den ersetzen?
Bei
Delphi-Quelltext
1:
| Result := StringReplace('Der Radfahrerhelm ist blau', '*fahr*', 'Ersetzt', []); |
müsste dann ja in Result nur 'Ersetzt' stehen.
Und auch bei
Delphi-Quelltext
1:
| Result := StringReplace('Ich fahre ins Blaue', '*fahr*', 'Ersetzt', []); |
kommt in Result nur 'Ersetzt' raus.
Dagegen steht bei
Delphi-Quelltext
1:
| Result := StringReplace('Die Fähre fährt', '*fahr*', 'Ersetzt', []); |
in Result auch 'Die Fähre fährt' raus.
Ist das so korrekt?
Dann kann man das mit:
Delphi-Quelltext
1: 2: 3: 4:
| if pos('fahr', Text) <> 0 then Result = 'Ersetzt' else Result = Text; |
machen.
Beste Grüße
TheUnknown - Do 04.02.10 12:49
Jain, es geht mir darum, dass ich z.B. Klammerbemerkungen entfernen kann.
Sagen wir mal als Beispiel "This is a Song (New Bonus Track)". Wenn in der Klammerbemerkung nun also die "Folge " (*Bonus*)" vorkommt, soll nur noch "This ist a Song" übrig bleiben. Würde ich jetzt einfach nur "(Bonus Track) suchen, würde in dem Fall die Function nicht greifen, weil ja da noch das Wort "New" drin ist.
Narses - Do 04.02.10 12:50
Moin!
TheUnknown hat folgendes geschrieben : |
| Der Link funktioniert leider nicht! :) |
Hm :? hab ich auch gerade bemerkt... :nixweiss: und ich finde auf Anhieb auch keinen Mirror... :gruebel:
Ich häng´s mal dran, war AFAIR lizenztechnisch OK.
cu
Narses
TheUnknown - Do 04.02.10 15:41
Danke für die Mühe, aber ich habe es jetzt anders geregelt, zwar icht genau das, was ich wollte, aber es langt aus! :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!