在Dr.Racket中,我将如何将字符串列表转换为字符串列表



在Dr.Racket中,如何将包含字符串的列表(每个字符串用空格分隔(转换为包含分隔字符串列表的列表。如果你不能很好地理解这个问题,这里有一个例子:给出一个列表,如:

(list "abc def" "ghj elm" "ref tio" "pol mnb")

我想生产:

(list (list "abc" "def") (list "ghj" "elm") (list "ref" "tio") (list "pol" "mnb"))

我为它写了一个代码,但很快就被卡住了。这是我到目前为止的代码:

(define (a los)
(cond
[(empty? los) empty]
[(char-whitespace? (first los)) (substring (list->string los) 1)]
[else (a (rest los))]))

例如:

(a (string->list "abc def"))

产生";def";。我希望首先根据空白将列表中的字符串分开,然后将它们拼凑在一起形成新的列表。然而,我不知道该怎么做。任何关于如何做到这一点的提示都将不胜感激。

有一个名为string-split的内置过程,它可以满足您的需求,就这么简单:

(define (split-list los)
(map string-split los))

它按预期工作:

(split-list '("abc def" "ghj elm" "ref tio" "pol mnb"))
=> '(("abc" "def") ("ghj" "elm") ("ref" "tio") ("pol" "mnb"))

最新更新