wen1235 发表于 2019-8-3 09:42:08

楼主 你有没有明经版的Alisp的帮助文档啊
你方向不对啊 你这功能vlisp都有的啊

烟盒迷唇 发表于 2019-8-3 10:13:02

这个能批量框选替换输入的新值吗,总不能打开代码修改了再替换吧,这样效率就没有了

taoyi0727 发表于 2019-8-3 12:00:20

ljxkm 发表于 2019-8-2 20:33
是出现了死循环,看样子这钱还真不好收啊,以前一直用着没什么问题,一般的使用还是没什么问题,这是几年前 ...

我写了一个 不知道我的思路和你的是不是一样的 (写了一上午,写了改,改了写,都有BUG)

;;说明:字符串替换
;;参数:new:新字符串
;;参数:old:旧字符串
;;参数:str:字符串
;;返回:字符串
;;用法:(T-string-subst "xx" "x" "xxx")-->"xxxxxx"
(defun T-string-subst (new old str / n)
(setq n (- (strlen new)))
    (while (setq n (vl-string-search old str (min (+ n (strlen new)) (strlen str))))
      (setq str (vl-string-subst new old str n))
    )
str
)

ljxkm 发表于 2019-8-3 13:08:26

本帖最后由 ljxkm 于 2019-8-3 13:16 编辑

taoyi0727,这样就对了,贴出东西来,主要是大家交流,取长补短,我那是几年前写的,细追确实有问题,今天上午我又写了一个,把他贴出来,也算一个交代吧,我在附件的zfcth.lsp里面改了,基本上达到了我的预想,原来那个主要是相同字符越替换越多,导致了死循环,这个应该就不会了,原来的我也留下,新代码如下:
(defun ljx-string-translate (newtx oldtx str / str1 strL oldL txt tx1 tx2 n1)
(setq str1 str
      strL (strlen str1)
      oldL (strlen oldtx)
      txt ""
)
(while (setq n1 (vl-string-search oldtx str1 ))
    (setq tx1 (substr str1 1 n1)
          tx2 (substr str1 (+ n1 1 oldL) (- strL (strlen tx1) oldL))
          txt (strcat txt tx1 newtx)
    )
    (setq str1 tx2
          strL (strlen str1)
    )
)
(setq txt (strcat txt str1))
);;;;defun

ljxkm 发表于 2019-8-3 16:21:39

taoyi0727 发表于 2019-8-3 12:00
我写了一个 不知道我的思路和你的是不是一样的 (写了一上午,写了改,改了写,都有BUG)

;;说明:字符串替 ...

taoyi0727,我看了你那个是可以的,也比较简洁,其实问题的关键是在vl-string-subst函数的使用上,我学lisp是铁道出版社的AutoLisp学习导引及配套那本函数帮助,当时不知有没有明经通道这样的论坛,上面的这个函数的帮助说明好像都是“in”替换“to”这样的,当时一点一点的试,就认为只能替换一样长度的,还在书上注明,故才绕了那么大个圈,去写这个函数,我后来贴上去这个函数也没有用到vl-string-subst,大家一讨论,你的那个程序一写,我一试,再看看wen1235说的,明白了,这些地方不晒晒,恐怕永远发现不了啊,Lisp特别是vLisp函数,那么多,要全部整明白用的精,也不可能吧,所以学习交流很有必要哈。

taoyi0727 发表于 2019-8-3 16:35:08

ljxkm 发表于 2019-8-3 16:21
taoyi0727,我看了你那个是可以的,也比较简洁,其实问题的关键是在vl-string-subst函数的使用上,我学li ...

我也是今天早上自己写的时候才发现的用飞诗写的 打个str就会出有关的函数,
刚开始我写的也和你差不多
后来才发现有这个 又重新改 也不太会用 不知道是从0开始还是从1开始,改来改去搞一上午,就几句话:L

paulpipi 发表于 2020-9-24 13:56:35

挺好的,学习一下

尘缘一生 发表于 2020-12-1 10:38:37

顶起此贴,希望继续完善,。。。。。。。。。。。。。。。

434939575 发表于 2021-6-8 08:24:15

这个可以,正好需要,谢谢!
页: 1 [2]
查看完整版本: 一个非常方便适用的字符串替换函数