删除括号外的文本
我想删除对象文本中位于一组括号或方括号之外的所有内容。我想知道最好的方法是什么。我考虑过使用vl字符串位置来查找括号/方括号的位置,然后以某种方式使用vl字符串左/右修剪。对于更有经验的人会如何应对这一问题,有什么建议吗? 由于LISP是为列表构建的,因此我会处理ASCII代码列表,例如:(defun trimtobrackets ( s )
(if (wcmatch s "*(*)*")
(vl-list->string (reverse (member 41 (reverse (member 40 (vl-string->list s))))))
)
)
_$ (trimtobrackets "outside (inside) outside")
"(inside)" 我还没有在任何代码中使用wcmatch。谢谢你的建议。我今天将对此进行调查。
我注意到在这个论坛上有几次使用反向。反转列表有什么好处?
使用成员时,为了获得列表的正确部分,需要反转列表 明白了!非常感谢。我不知道你必须从一开始就开始工作。我认为你可以从头开始向后或从头开始向前。 另一个
(setq st "Abc (IN) 123 ")
(if (and (setq a (vl-string-search "(" st)) (setq b (vl-string-search ")" st))
)
(substr st (1+ a) (- (+ 2 b) (1+ a)))
)
请注意:
相当于:
然而,我倾向于在vl字符串搜索上使用vl字符串位置:
为了解释这些情况:
_$ (trimtobrackets "abc(123(def)456)ghi")
"(123(def)456)" 李-为什么我需要使用wcmatch函数?如果我知道我在文本中寻找什么,它应该能够在没有这个权利的情况下提取信息?
对的
为了确保提供的字符串包含要修剪到的括号字符,否则您将收到意外的结果或错误,具体取决于用于修剪字符的方法。
页:
[1]
2