[UPDATE] ReplaceStrings() - Mehrere Strings auf einmal ers..
Verfasst: 12.07.2006 13:10
Hallo!
Ich habe eine Prozedur geschrieben, die mehrere Strings auf einmal ersetzt. Es wird eine ausgewogene Kombination aus einer For-Schleife und dem PB-Befehl ReplaceString() verwendet.
Angenommen, ihr habt einen String, der sieht so aus:
%x: wie viele Dateien markiert
%y: Anzahl Gesamtdateien
%size: Gesamtgröße
Dann musste man bisher immer schreiben:Als Beispiel werden hier fixe Angaben verwendet: 9 von 10 Dateien markiert, Größe: 22 MB
OK, hier nun die Prozedur und darunter der kleine, neue Aufruf, der en obigen 3x ReplaceString() ersetzt:
Das wars, diese eine Zeile ist nur nötig. Die StringsToFind$ und StringsToReplace$ gibt man einfach an wie Pattern bei einem OpenFileRequester().
Lustigerweise und einfachheitshalber habe ich die Funktionen und Parameter genauso wie PB genannt, nur halt von allem die Mehrzahl:
ReplaceString() => ReplaceStrings(), usw...
Wer will, kann sich ja auch ein eigenes Trennzeichen einbauen, wenn er nicht auf das | verzichten will.
Edit: Code optimiert, kompatibel mit allen gängigen Versionen von PB.
Edit 2: Code optimiert, kompatibel mit PB 4.0 oder höher. Es werden außerdem die optionalen Parameter Mode und StartFrom von ReplaceString() unterstützt!
Ich habe eine Prozedur geschrieben, die mehrere Strings auf einmal ersetzt. Es wird eine ausgewogene Kombination aus einer For-Schleife und dem PB-Befehl ReplaceString() verwendet.

Angenommen, ihr habt einen String, der sieht so aus:
Code: Alles auswählen
String$="%x von %y Dateien markiert, Größe: %size"
%y: Anzahl Gesamtdateien
%size: Gesamtgröße
Dann musste man bisher immer schreiben:
Code: Alles auswählen
ReplaceString(ReplaceString(ReplaceString($String, "%x", "9"), "%y", "10"), "%size", "22 MB")
OK, hier nun die Prozedur und darunter der kleine, neue Aufruf, der en obigen 3x ReplaceString() ersetzt:
Code: Alles auswählen
Procedure.s ReplaceStrings(String$, StringsToFind$, StringsToReplace$, Separator$="|", Mode=0, StartFrom=1)
Protected n.l
For n=1 To CountString(StringsToFind$, Separator$)+1
String$=ReplaceString(String$, StringField(StringsToFind$, n, Separator$), StringField(StringsToReplace$, n, Separator$), Mode, StartFrom)
Next
ProcedureReturn String$
EndProcedure
Debug ReplaceStrings("Datei %x von %y, Größe: %size", "%x|%y|%size", "9|10|22 MB")
Lustigerweise und einfachheitshalber habe ich die Funktionen und Parameter genauso wie PB genannt, nur halt von allem die Mehrzahl:
ReplaceString() => ReplaceStrings(), usw...
Wer will, kann sich ja auch ein eigenes Trennzeichen einbauen, wenn er nicht auf das | verzichten will.
Edit: Code optimiert, kompatibel mit allen gängigen Versionen von PB.
Edit 2: Code optimiert, kompatibel mit PB 4.0 oder höher. Es werden außerdem die optionalen Parameter Mode und StartFrom von ReplaceString() unterstützt!