diff options
Diffstat (limited to 'scheme/aps/string-utils.sls')
-rw-r--r-- | scheme/aps/string-utils.sls | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/scheme/aps/string-utils.sls b/scheme/aps/string-utils.sls index 8e8aaf1..0d6b8c0 100644 --- a/scheme/aps/string-utils.sls +++ b/scheme/aps/string-utils.sls @@ -1,21 +1,23 @@ (library (aps string-utils) (export string-split) -(import (rnrs)) +(import (rnrs) (aps compat)) +;;STRING-SPLIT +;; adapted from http://schemecookbook.org/Cookbook/StringSplit +;; to match Python behaviour (define (string-split str ch) (define len (string-length str)) (define (split a b) + ;(printf "~a: ~a ~a\n" str a b) (cond ((>= b len) - (if (= a b) '() + (if (= a b) '("") (list (substring str a b)))) ((char=? ch (string-ref str b)) - (if (= a b) (split (+ 1 a) (+ 1 b)) + (if (= a b) (let ((res (split (+ 1 a) (+ 1 b)))) + (if (= 0 a) (cons "" res) res)) (cons (substring str a b) (split b b)))) (else (split a (+ 1 b))))) (split 0 0)) +;;END ) - -;(display (string-split "a.b" #\.)) -;(display (string-split ".b" #\.)) -;(display (string-split "a." #\.)) |