Aftertouch 发表于 2022-7-5 16:38:00

替换giv上的给定字符

大家好,
 
我想做一个函数来替换字符串/int的给定位置上的给定字符。
 
例如
如果有一个字符串/int,则为:
- 11111001112022020
我想将此更改为:
- 11111001112012020
 
所以
 

- 11111001112022020
- 11111001112012020

 
但我想替换的角色每次都不同。
所以我在寻找一个函数,比如:
 
(defun CHANGENUMBER(位置newnumber/)
(setq oldnumber(getvar“UserS1”))
(setvar“UserS1”newnumber)
(普林斯)
)
 
我可以把strcat和strlen结合起来生成te编号。。但是必须有一个更简单的方法。。。

Lee Mac 发表于 2022-7-5 18:23:15

快速示例:
(defun CharAtN ( cha pos str )
   (if (<= 1 pos (strlen str))
       (strcat (substr str 1 (1- pos)) cha (substr str (1+ pos)))
       str
   )
)
(defun CharAtN ( cha pos str )
   (setq cha (ascii cha))
   (vl-list->string (mapcar '(lambda ( x ) (if (zerop (setq pos (1- pos))) cha x)) (vl-string->list str)))
)
(defun CharAtN ( cha pos str )
   (cond
       (   (= 1 pos) (strcat cha (substr str 2)))
       (   (= "" str) str)
       (   (strcat (substr str 1 1) (CharAtN cha (1- pos) (substr str 2))))
   )
)
页: [1]
查看完整版本: 替换giv上的给定字符