zhuquanmao 发表于 2012-3-9 09:25:41

vl-string-left-trim 函数怎么用?

(defun c:tt ()
(vl-load-com)
(setq a "123-232-250-231")
(setq a (vl-string-left-trim "-" a))
(print a)
(princ)
为什么a不是"123232-250-231"?
)

chg 发表于 2012-3-9 10:12:22

函数从字符串a的第一个字符开始和“-”匹配,遇上第一个不匹配的字符后,函数执行完毕,不再继续搜索。你这里第一个字符是1,和“-”不符,函数结束,所以字符串a无变化。

zhuquanmao 发表于 2012-3-9 10:35:04

这样啊 。。。。原来不是很理解这个函数,谢谢!
再请教有啥函数 能查出一个字符串含有另一个字符串的数量
比如上边这个"123-232-250-231"中含有3个"-"

nzl1116 发表于 2012-3-9 12:11:20

(defun ttt (str)
(if (/= str (vl-string-subst "" "-" str))
(ttt str) str)
)
(- (strlen str) (strlen (ttt str)))

zhuquanmao 发表于 2012-3-9 14:19:47

本帖最后由 zhuquanmao 于 2012-3-9 14:21 编辑

哈哈 不错 谢谢! 我自己也写了个 繁琐点儿(setq nn 0)
    (while (vl-string-search "-" a)
      (progn
      (setq A (substr A (+ 2 (vl-string-search "-" A))))
      (setq nn (+ 1 nn))
      )
    )
(PRINC nn)

xxwz 发表于 2018-7-10 16:29:20

请问如果想要直接删除“-”,有没有函数呢?还是说需要编程?

cabinsummer 发表于 2018-7-11 15:01:58

(defun tt(str char)
(- (strlen str)(length (vl-remove (ascii char) (vl-string->list str))))
)
(tt "123-232-250-231" "-");;;返回3

;;;删除“-”
(defun tt(str char)
(vl-list->string (vl-remove (ascii char) (vl-string->list str)))
)
(tt "123-232-250-231" "-");;;返回"123232250231"
页: [1]
查看完整版本: vl-string-left-trim 函数怎么用?