在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"))