字符串替换
本帖最后由 小鸟 于 2023-4-23 14:28 编辑;;;字符串
;;;被替换
;;;替换为
;;;(tihuanzifu "1234567890423456447" "456" "bb")
;;;>> "123bb7890423bb447"
(defun tihuanzifu (zfc bzfc wzfc / n ii)
(setq ii 0
n(strlen zfc)
)
(repeat n
(setq ii(vl-string-search bzfc zfc ii)
zfc (vl-string-subst wzfc bzfc zfc ii)
)
)
zfc
)
(defun string:subst-all (str-new str-old str / inc len)
"用 str-new 替换 字符串中所有的 str-old "
"结果字符串"
"(string:subst-all \"qwe\"
\"abc\"
\"mabcpoildabce\")
=> \"mqwepoildqwee\""
(if (> (strlen str-old) 0)
(progn
(setq len (strlen str-new)
inc 0)
(while (setq inc (vl-string-search str-old str inc))
(setq str (vl-string-subst str-new str-old str inc)
inc (+ inc len)))))
str)
试试这行代码报错不?
(tihuanzifu "1234567890423456447" "456" "bb") 本帖最后由 小鸟 于 2023-4-23 13:59 编辑
vitalgg 发表于 2023-4-23 11:55
试试这行代码报错不?
(tihuanzifu "1234567890423456447" "456" "bb")
报错了,但是手动按的时候 有结果。 我再研究研究:handshake 对比一下我们两个代码的区别就明白了 vitalgg 发表于 2023-4-23 14:29
对比一下我们两个代码的区别就明白了
看到了跳过被替换的字符就不会重复了,把+1 改成+替换的字符长度,我又进步一点点了 https://gitee.com/atlisp/atlisp-lib
@lisp 开源函数库,大量函数期待您的开发与维护。众多开发者协同开发与维护,你不再是一个人在战斗。
在CAD中执行
(@:updatelib)
实时更新函数库。
本贴函数源码:
https://gitee.com/atlisp/atlisp-lib/blob/main/src/string/subst-all.lsp
页:
[1]