zoukankan      html  css  js  c++  java
  • scheme的split实现

    再chez中并未找到一个split函数,基于尾递归,自己实现了了一个用于字符串拆分的split。

    (define split
          (lambda (str sep)
            (define loop
                 (lambda (str sep result)
                      (let ((l_str (string-length str))
                            (l_sep (string-length sep)))
                        (cond
                          ((< l_str l_sep)  (cons (string-append (car result) (substring str 0 1) ) (cdr result)))
                          ((= l_str l_sep)
                           (cond
                             ((string=? (substring str 0 l_sep) sep) result)
                             (else
                               (cons
                                 (string-append (car result) (substring str 0 l_sep) )
                                (cdr result)))))
                          (else
                            (cond
                              ((string=? (substring str 0 l_sep) sep) (loop (substring str l_sep l_str) sep (cons "" result)))
                              (else
                                (loop (substring str 1 l_str) sep (cons (string-append (car result) (substring str 0 1) ) (cdr result))))))))))
              (reverse (loop str sep '("")))))

    在chez下测试成功。

    例如:

    > (split "How are you? I/m fine thank you" " ")
    ("How" "are" "you?" "I/m" "fine" "thank" "you")
    > (split "12@345@@678@@@910" "@@")
    ("12@345" "678" "@910")。

    然后,先这样把。

  • 相关阅读:
    BZOJ 2212/BZOJ 3702
    BZOJ 4761 Cow Navigation
    BZOJ 3209 花神的数论题
    BZOJ 4760 Hoof, Paper, Scissors
    BZOJ 3620 似乎在梦中见过的样子
    BZOJ 3940 Censoring
    BZOJ 3942 Censoring
    BZOJ 3571 画框
    BZOJ 1937 最小生成树
    BZOJ 1058 报表统计
  • 原文地址:https://www.cnblogs.com/evening/p/10234085.html
Copyright © 2011-2022 走看看