本帖最后由 vitalgg 于 2021-3-1 19:45 编辑
一定要注意程序中说明的条件。下面这是有多个空格且有自定义格式的字串样例,需要分析这个;到} 之间都是空格或<TAB>之类的无显示字串。
{\fVerdana|b0|i0|c0|p34; }
 - (defun string:from-lst(lst Separator) "列表转成字符串"
- (if (cdr lst)
- (strcat (car lst) Separator (string:from-lst (cdr lst) Separator))
- (car lst)))
- (defun string:to-lst (str Separator / pos)
- "字符串转成列表"
- (if (setq pos (vl-string-search Separator str))
- (cons (substr str 1 pos)
- (string:to-lst (substr str (+ pos 1 (strlen Separator))) Separator))
- (list str)))
- (defun remove-mtext-lastspace () ;;"去多行文本最后一行的空格(只有一个空格,多了还得改,还有最后的空格不能有自己样式。就是一个纯空格)"
- (setq en0 (car (entsel)))
- (setq strlst (string:to-lst (cdr (assoc 1 (entget en0))) "\\P"))
- (if (= " " (last strlst))
- (entmod
- (subst
- (cons 1 (string:from-lst (reverse (cdr (reverse strlst))) "\\P"))
- (assoc 1 (entget en0)) (entget en0)))))
- (defun c:tt () (remove-mtext-lastspace))
|