这个批量替换源码如何改为全字匹配模式呢?
这个网上一个大神做的批量替换程序,程序见附件,但这个程序有个问题就是替换数字时容易出错,比如我创建了一个替换表1,2 11,3 我替换11的时候就会替换成22,而不是3,所以请大神们帮我更改一下这个源码,使之能够全字匹配替换。你把11,3放到1,2前面就没有这个问题 终于找到合适的了,多谢分享 这是熊掌的程序啊 全字匹配,也就是你的文字只有这个几个字符才能实现。其次实现就是判断的时候不用查找直接用等于判断就可以了。原来的程序估计写时间应该比较早,判断过程挺复杂的。全字匹配的话可以直接 :
(if (= oldchetext)(setq newtext newch) )
muwind 发表于 2022-5-6 00:30
全字匹配,也就是你的文字只有这个几个字符才能实现。其次实现就是判断的时候不用查找直接用等于判断就可以 ...
“muwind”你好,
能不能麻烦你出手改一下,确实无法全字匹配。 本帖最后由 muwind 于 2022-5-6 22:22 编辑
全字匹配真的很简单,
如果你所有的替换都要全字匹配 可以把repall改名为KX-reptext替换原来的函数
如果你要保留部分替换,可以在原来的代码基础上增加一个选项,
设置为全字匹配的时候调用repall进行替换,不需要全字匹配的时候用原来的KX-reptext
选择集判断我习惯在主程序里面判断 是否为nil,在子函数里面我觉得还是干净点比较好
(defun repall (SS oldch newch / ssct0 edata etext )
(setq ssl (sslength ss) ct0 0 )
(while (< ct0 ssl)
(setq edata (entget (ssname ss ct0)) etext (cdr (assoc 1 edata)))
(if (= oldch etext)(entmod (subst (cons 1 newch) (assoc 1 edata) edata)))
(setq ct0 (1+ ct0))
)
)
(DEFUN C:tt()
(setvar "cmdecho" 0)
(if (setq ss(SSGET":s" '((0 . "*TEXT"))) )
(progn
(repall SS "全字" "全字匹配")
(repall SS "匹配全字" "全字匹配")
)
(princ "您没有选择任何文字,我喝西北风去了")
)
(PRINC)
)
感谢大佬分享 输入QQ,读取直接nil,路径按照默认设置,读取不到 muwind 发表于 2022-5-6 22:14
全字匹配真的很简单,
如果你所有的替换都要全字匹配 可以把repall改名为KX-reptext替换原来的函数
如果 ...
明明有对应文字,却显示没有选择任何文字;
页:
[1]