【发布时间】:2014-08-31 09:43:30
【问题描述】:
在自动 Emacs Lisp --batch/--script 脚本中,我需要处理提供给脚本的命令行参数。
我已经将参数放入表单列表中:
("--aaa=bbb" "--ccc=ddd=eee" "--blah")
现在,我需要将它们转换为表单列表:
(("aaa" "bbb") ("ccc" "ddd=eee") ("blah"))
在 Python 中我会写类似的东西;
output = []
for v in input:
output.append(v[2:].split("=", 1))
但无法将该代码转换为 Emacs Lisp。我找到了Elisp split-string function to split a string by . character,但不知道如何让它只在第一个等号上拆分。
我正在使用cl 包中的(substring "abcdefg" x x) 和(search),但感觉应该有更好的方法?我想也想使用(mapc '<function> input) where 函数执行v[2:].split("=",1) 部分。
【问题讨论】:
-
请注意,在原始帖子中,所需的结果是
(("aaa" "bbb") ("ccc" "ddd") ("blah"))。这就是我的第一个解决方案所提供的。新需求(("test") ("aaa" "bbb") ("ccc" "ddd=eee"))的解决方案现在添加到我下面的答案中。
标签: emacs command-line elisp command-line-arguments