Ladies_Man

Обработка строк

Dec 26th, 2013
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.86 KB | None | 0 0
  1. (define (string-trim-left s)
  2.   (define (iter i)
  3.     (if (= i (string-length s))
  4.         ""
  5.         (if (or (char=? (string-ref s i) #\tab) (char=? (string-ref s i) #\space) (char=? (string-ref s i) #\newline))
  6.             (iter (+ i 1))
  7.             (substring s i)))
  8.   )
  9.   (iter 0))
  10.  
  11. (define (string-trim-right s)
  12.   (define (iter i)
  13.     (if (= i (- 1))
  14.       ""
  15.       (if (or (char=? (string-ref s i) #\tab) (char=? (string-ref s i) #\space) (char=? (string-ref s i) #\newline))
  16.           (iter (- i 1))
  17.           (substring s 0 (+ i 1))))
  18.   )
  19. (iter (- (string-length s) 1)))
  20.  
  21. (define (string-trim s)
  22.   (string-trim-left (string-trim-right s)))
  23.  
  24.  
  25. (define (string-prefix? a b)
  26.   (if (> (string-length a) (string-length b))
  27.       #f
  28.       (string=? (substring b 0 (string-length a)) a)))
  29.  
  30. (define (string-suffix? a b)
  31.   (if (> (string-length a) (string-length b))
  32.       #f
  33.       (string=? (substring b (- (string-length b) (string-length a))) a)))
  34.  
  35. (define (string-infix? a b)
  36.   (define (iter a b)
  37.     (if (> (string-length a) (string-length b))
  38.         #f
  39.         (if (string-prefix? a b)
  40.            #t
  41.            (iter a (substring b 1)))))
  42. (iter a b))
  43.  
  44. (define (string-split str sep)
  45.   (define (iter a b buf)
  46.     (append
  47.       (if (<= (string-length a) (string-length b))
  48.           (if (string-prefix? a b)
  49.               (list buf (iter a (substring b (string-length a)) ""))
  50.               (list (iter a (substring b 1) (string-append buf (substring b 0 1)))))
  51.           (list (string-append buf b))))
  52.   )
  53.   (define (my-flatten l)
  54.     (if (null? l)
  55.         '()
  56.         (append (if (list? (car l))
  57.                     (my-flatten (car l))
  58.                     (list (car l)))
  59.                 (if (null? (cdr l))
  60.                     '()
  61.                      (my-flatten (cdr l)))
  62.         ))
  63.     )
  64.    (my-flatten (iter sep str "")))
Advertisement
Add Comment
Please, Sign In to add comment