Funktion zum Filtern von Zeichen in String

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
klammerauf
UDF-Programmierer
UDF-Programmierer
Beiträge: 69
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

Funktion zum Filtern von Zeichen in String

Beitrag von klammerauf »

Hallo,

ich bin nochmals auf der Suche nach einer schönen Funktion.

Diesmal suche ich eine CharOnly() Funktion:

Code: Alles auswählen

cText := "A100X_12BdV"
CharOnly( cText, "AB_" ) -> "AB_"
CharOnly( cText, "012" ) -> "10012"
Gibt es vielleicht eine vorhandene Funktion, die das macht?

Danke im Voraus.
Exzessiver Codeblock Programmierer
--
Grüße
Sebastian
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21199
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Funktion zum Filtern von Zeichen in String

Beitrag von Manfred »

Du hast doch schon den Namen genannt. Ist es nicht gleichnamige Funktion aus den alten Tools?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Funktion zum Filtern von Zeichen in String

Beitrag von Tom »

Das ist in zehn Minuten selbstgebaut. Zwei Strings, der eine enthält, was Du als „Character“ definiertst, der andere den Rest. Oder, einfacher: Wenn nur Ziffern so oder so extrahiert werden sollen, muss man nur die Quelle durchdackeln und entweder alles nehmen (und in einen Zielstring übertragen), das auch in der Zifferngruppe zu finden ist, oder das, was eben nicht in dieser Gruppe ist.

Code: Alles auswählen

FUNCTION CharOnly(c)
LOCAL cZiffern := „0123456789“, n, cTarget := „“
FOR n := 1 TO Len(c)
  IF !c[n] $ cZiffern
     cTarget += c[n]
  ENDIF
NEXT
RETURN c
Und dann noch die Gegenfunktion, oder ein zusätzlicher Parameter, der das festlegt - und ein bisschen mehr Eleganz ginge auch noch, aber das Leben ist kein Wunschkonzert.
Herzlich,
Tom
Antworten