gpt4 book ai didi

list - lisp - 要构造或列表的字符串

转载 作者:太空宇宙 更新时间:2023-11-03 18:51:17 25 4
gpt4 key购买 nike

我对普通的 lisp 有疑问。

我想将一个字符串传递给一个函数并希望这个字符串成为一个结构。我无法使用外部库。

例如这个输入:

(testfu "ftp/http.ok:3345")

这是结构:

(defstruct test-struct
scheme
part
ans
port)

我想要这样的结果:

scheme: "ftp" part: "http" ans "ok" port "3345"

我该如何做 testfu ?

这是我的失败尝试:(

(defun testfu (x) 
(setq ur1 (make-test-struct :scheme frist x :host second x)))

最佳答案

我建议使用正则表达式来解析它。使用作为 Common Lisp 正则表达式库的 CL-PPCRE,代码将如下所示:

(defun testfu (x)
(multiple-value-bind (result values)
(ppcre:scan-to-strings "^([a-z]+)/([a-z]+)\\.([a-z]+):([0-9]+)$" x)
(unless result
(error "String ~s is not valid" x))
(make-test-struct :scheme (aref values 0)
:part (aref values 1)
:ans (aref values 2)
:port (aref values 3))))

请注意,您可能需要调整正则表达式以更好地表示输入字符串的实际格式,特别是如果任何字段是可选的。

关于list - lisp - 要构造或列表的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9055049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com