diff options
-rw-r--r-- | scheme/aps/string-utils.sls | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/scheme/aps/string-utils.sls b/scheme/aps/string-utils.sls new file mode 100644 index 0000000..8e8aaf1 --- /dev/null +++ b/scheme/aps/string-utils.sls @@ -0,0 +1,21 @@ +(library (aps string-utils) +(export string-split) +(import (rnrs)) + +(define (string-split str ch) + (define len (string-length str)) + (define (split a b) + (cond + ((>= b len) + (if (= a b) '() + (list (substring str a b)))) + ((char=? ch (string-ref str b)) + (if (= a b) (split (+ 1 a) (+ 1 b)) + (cons (substring str a b) (split b b)))) + (else (split a (+ 1 b))))) + (split 0 0)) +) + +;(display (string-split "a.b" #\.)) +;(display (string-split ".b" #\.)) +;(display (string-split "a." #\.)) |