diff options
Diffstat (limited to 'csc/strings.csc')
| -rw-r--r-- | csc/strings.csc | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/csc/strings.csc b/csc/strings.csc index 737c91b..0259697 100644 --- a/csc/strings.csc +++ b/csc/strings.csc @@ -1,14 +1,17 @@ (define-library (csc strings) (export + contains find join not-found-error? prefix? + split str-quote) (import (scheme base) (only (scheme case-lambda) case-lambda) (only (scheme write) write) - (only (csc list) intercalate)) + (only (csc list) intercalate) + (only (csc loop) loop)) (begin @@ -42,5 +45,21 @@ (else (loop (+ 1 i)))))))) + (define (contains s substr) + (if (string=? "" substr) + #t + (guard (e ((not-found-error? e) #f)) + (find substr s) + #t))) + + (define (join sep . strings) - (apply string-append (intercalate sep strings))))) + (apply string-append (intercalate sep strings))) + + + (define (split s sep) + (loop for s* = s then (string-copy s* (+ i (string-length sep))) + for i = (guard (e ((not-found-error? e) (string-length s*))) + (find sep s*)) + collect (substring s* 0 i) + while (< i (string-length s*)))))) |
