如何使用 clisp 将字符串转换为列表?
如何优雅地将字符串 "1 2 3 4 5 6 7"
转换为列表 (1 2 3 4 5 6 7)
?我正在使用 CLISP。
How can i convert the string "1 2 3 4 5 6 7"
into the list (1 2 3 4 5 6 7)
elegantly? I am using CLISP.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
这是一个递归解决方案。
Here is a recursive solution.
提示:查看with-input-from-string。
Hint: Take a look at with-input-from-string.
您应该在 a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_parse_.htm" rel="nofollow">
parse-integer
中使用环形。例如,使用
loop
:⇒
(1 2 3)
如果您需要更好地控制拆分,请使用
split-sequence
或cl-ppcre
库。如果您需要解析更通用的数字格式,请使用
parse-number
库。可以从 Quicklisp 获取库。
You should use
parse-integer
in a loop.For example, using
loop
:⇒
(1 2 3)
If you need better control about the splitting, use the
split-sequence
orcl-ppcre
library.If you need to parse more general number formats, use the
parse-number
library.Libraries are available from Quicklisp.
它可以工作,但我觉得它不是那么优雅,因为有很多
read
调用。再次感谢!
it works however i feel it is not so elegant as there are many
read
call .thanks again!
我认为这可能有效:
这会创建一个以空格作为元素的列表。删除空格:
I think this might work:
This makes a list with spaces as elements. Remove spaces:
我认为斯万特是对的。我之前的尝试没有成功。这是另一种尝试。我使用连接将字符串更改为列表表示形式。然后我使用 read-from-string 将字符串 (s-2) 转换为实际列表。
我将其放入这样的函数中:
“let”和“L”的唯一目的是使函数 from-string-tolist 仅返回列表而不返回多个值。 read-from-string 返回两个值:我认为是列表和字符串的大小。
I see that Svante is right. My previous attempt did not work. Here is another attempt. I use concatenate to change the string into a list representation. Then I use read-from-string to convert the string (s-2) into an actual list.
I roll it into a function like this:
The only purpose of "let" and "L" is to make the function from-string-to-list return only the list and not return multiple values. read-from-string returns two values: The list and the size of the string, I think.
这样就可以了,
That would do,
您还可以使用 map 函数:
You can also use the map function: