Mehr als 1 Zeichen suchen? Wie z.B. s" Kalender2015" s"0123456789" multiscan?

29/06/2015 - 12:22 von djc | Report spam
Hallo,

ich suche ein Forth-Wort, das Zeichen aus einer Liste in einer Zeichenkette sucht, z.B. alle Ziffern von 0-9:

s" Kalender2015" s"0123456789" multiscan --> count type --> "2015"
Gibt also den Rest des Strings am dem ersten "Treffers" zurück.

Gibt es sowas
* im Forth-Standard?
* in gForth?
* als Erweiterung?

Vielen Dank,
Daniel
 

Lesen sie die antworten

#1 Bernd Paysan
29/06/2015 - 21:32 | Warnen spam
djc wrote:

Hallo,

ich suche ein Forth-Wort, das Zeichen aus einer Liste in einer
Zeichenkette sucht, z.B. alle Ziffern von 0-9:

s" Kalender2015" s"0123456789" multiscan --> count type --> "2015"
Gibt also den Rest des Strings am dem ersten "Treffers" zurück.

Gibt es sowas
* im Forth-Standard?
* in gForth?
* als Erweiterung?



Du meinst wohl Regexps ;-). Ja, die gibt's in Gforth, auch wenn sie nicht
PCRE-kompatibel sind.

require regexp.fs

charclass digits '0' '9' ..char

: scan-digits ( addr u -- )
(( // \( {++ digits c? ++} \) ))
IF \1 ELSE s" " THEN ;

s" Kalender2015" scan-digits type 2015 ok

Bernd Paysan
"If you want it done right, you have to do it yourself"
net2o ID: kQusJzA;7*?t=}1GWr!+0qqp_Cn176t4(dQ*
http://bernd-paysan.de/

Ähnliche fragen