xiaocainiao 发表于 2023-3-7 12:13:50

xyp1964 发表于 2023-3-7 11:50
(defun abc (str / lst a b)
;; (abc "节点01") → ("节点" "01")
(setq        lst (vl-string->list str ...

通常会有这几种情况、“节点011”、“节点-011”、“节点 011” 和“节点1.01”

xiaocainiao 发表于 2023-3-7 12:14:55

d1742647821 发表于 2023-3-7 12:02
我试了,把defun放前面不会报错

放前面也是报错的、我的源代码就是放前面的、只是偶尔会正常。正常的概率非常低

wzg356 发表于 2023-3-8 10:56:23

汉字是双子节,标点符号也是,有时substr把1汉字裁成两半就会出错

xiaocainiao 发表于 2023-3-8 10:59:34

wzg356 发表于 2023-3-8 10:56
汉字是双子节,标点符号也是,有时substr把1汉字裁成两半就会出错

请教一下应该如何修改这个代码才能不报错了、以前没弄过这个东西、谢谢

wzg356 发表于 2023-3-8 11:04:25

xiaocainiao 发表于 2023-3-8 10:59
请教一下应该如何修改这个代码才能不报错了、以前没弄过这个东西、谢谢

substr之前先用vl-search……定位,手机回,记不得函数了,自己查

xj6019 发表于 2023-3-8 11:05:56

是不是那个系统变量的问题呀

wzg356 发表于 2023-3-8 11:23:35

xiaocainiao 发表于 2023-3-8 10:59
请教一下应该如何修改这个代码才能不报错了、以前没弄过这个东西、谢谢

最大毛病是不能那样简单转表倒置,比如177 188是一个汉字,倒过来188 177就不能转汉字—出错,相应substr裁剪位置也不能把汉字裁为两半

xiaocainiao 发表于 2023-3-8 13:12:26

wzg356 发表于 2023-3-8 12:21
(defun aa(str / num n lst a)
(setq num "" n 0)
(setq lst(reverse(vl-string->list str)))


谢谢、我试一下

Klein 发表于 2023-3-23 15:21:45

我的一段程序中的一部分,fontw是字符长度
(setq ct 0)
(setq j 1)
;判断包含英文字符个数
(repeat FontW
(if (< (ascii (substr txts j 1)) 127)
    (setq ct (1+ ct))
)
(setq j (1+ j))
)
(setq tmp (substr txts 1 (- FontW (rem ct 2)))) ;含奇数英文字符则少取一位
(setq txts (substr txts (1+ (- FontW (rem ct 2))))) ;截取剩余字符
页: 1 [2]
查看完整版本: 使用wcmatch判断中文报错