11

schema を使用してファイルから読み取り、その内容をリストに入れようとしています。

問題は、疑問符と数字を削除して、単語だけを残す方法です。ループを使用して毎回チェックする必要がありますか? そうでない場合、「読み取り」から次の単語の内容を取得するにはどうすればよいですか?

このコードを使用して解決しようとしましたが、ファイルの終わりを取得するまで「読み取り」を呼び出す方法が見つかりません。

(define Project
  (lambda (fileName)
    (if (null? fileName) 
        'error
        (readNext (open fileName) '()))))

(define readNext
  (lambda (fc tmp)
    (if (null? (read fc) "#<eof>")
        tmp
        (readNext fc (cons (read fc) tmp)))))
4

5 に答える 5

5

たぶん、これで始められるでしょう。

(define (file->list-of-chars file)
  (with-input-from-file file
    (lambda ()
      (let reading ((chars '()))
        (let ((char (read-char)))
          (if (eof-object? char)
              (reverse chars)
              (reading (cons char chars))))))))
于 2013-05-02T14:03:28.800 に答える
2

SRFI-42 の "list-ec" を使用してファイルから行を読み取ります。

(use srfi-42) ; Chicken
  or
(require srfi/42) ; Racket

(define (file->lines filename)
  (call-with-input-file filename
    (lambda (p)
      (list-ec (:port line p read-line) line))))

SRFI-13 と SRFI-14 を使用して行を解析する:

(use srfi-13) (use srfi-14) ; Chicken
  or
(require srfi/13) (require srfi/14) ; Racket

(string-tokenize "hi; ho")
("hi;" "ho")

(string-tokenize "hi; ho" char-set:letter)
("hi" "ho")
于 2018-07-06T17:43:06.813 に答える