diff --git a/lib/chibi/strings.scm b/lib/chibi/strings.scm index cdda28e7..74d6b81c 100644 --- a/lib/chibi/strings.scm +++ b/lib/chibi/strings.scm @@ -81,10 +81,12 @@ (string-skip-right str pred)))) (define (string-trim str . o) - (let ((pred (make-char-predicate (if (pair? o) (car o) #\space)))) - (substring-cursor str - (string-skip str pred) - (string-skip-right str pred)))) + (let* ((pred (if (pair? o) (car o) #\space)) + (left (string-skip str pred)) + (right (string-skip-right str pred))) + (if (string-cursor>=? left right) + "" + (substring-cursor str left right)))) (define (string-mismatch prefix str) (let ((end1 (string-cursor-end prefix)) diff --git a/tests/string-tests.scm b/tests/string-tests.scm index c07e44e5..b475f9df 100644 --- a/tests/string-tests.scm +++ b/tests/string-tests.scm @@ -59,6 +59,9 @@ (test "abc" (string-trim " abc")) (test "abc" (string-trim "abc ")) (test "abc" (string-trim " abc ")) +(test "" (string-trim "")) +(test "" (string-trim " ")) +(test "" (string-trim " ")) (test #t (string-prefix? "abc" "abc")) (test #t (string-prefix? "abc" "abcde"))