明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1710|回复: 18

[提问] 使用wcmatch判断中文报错

[复制链接]
发表于 2023-3-7 11:01:29 | 显示全部楼层 |阅读模式
2明经币
  1. (Faith-string->num "节点01")
  2. (defun Faith-string->num (str / num1)
  3.   (setq str (vl-list->string (reverse (vl-string->list str)))
  4.     num1 ""
  5.   )
  6.   (while (wcmatch (substr str 1 1) "[0-9]")
  7.     (setq num1 (strcat (substr str 1 1) num1)
  8.       str (substr str 2)
  9.     )
  10.   )
  11.   (list (vl-list->string (reverse (vl-string->list str))) (atoi num1) (strlen num1))
  12. )
请教论坛的各位大神、上面的代码用wcmatch判断中文时总是报错和警告、
提示发生未知意外、应该如何处理啊?

最佳答案

查看完整内容

(defun aa(str / num n lst a) (setq num "" n 0) (setq lst(reverse(vl-string->list str))) (while (member(setq a(car lst))(list 46 47 48 49 50 51 52 53 54 55 56 57)) (setq n(1+ n) num(strcat (chr a) num) lst(cdr lst) ) ) (list (substr str 1(- (strlen str) n)) (read num) n) ) (defun aa (str / str1) (setq str1(vl-string ...
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-3-7 11:01:30 | 显示全部楼层
本帖最后由 wzg356 于 2023-3-8 12:44 编辑

(defun aa(str / num n lst a)
(setq num "" n 0)
(setq lst(reverse(vl-string->list str)))
(while
        (member(setq a(car lst))(list 46 47 48 49 50 51 52 53 54 55 56 57))        
        (setq n(1+ n)
                num(strcat (chr a) num)
                lst(cdr lst)
        )
)
(list (substr str 1(- (strlen str) n)) (read num) n)
)


(defun aa (str / str1)
        (setq str1(vl-string-right-trim ".0123456789"str))
        (list str1(read(substr str(1+(strlen str1)))))
)


只有一个小数点的情况没排出
回复

使用道具 举报

发表于 2023-3-7 11:16:57 | 显示全部楼层
函数要先defun再调用
回复

使用道具 举报

 楼主| 发表于 2023-3-7 11:25:08 | 显示全部楼层
d1742647821 发表于 2023-3-7 11:16
函数要先defun再调用

顺序问题咱先不管他了、主要是程序问题
回复

使用道具 举报

发表于 2023-3-7 11:30:15 | 显示全部楼层
xiaocainiao 发表于 2023-3-7 11:25
顺序问题咱先不管他了、主要是程序问题

先把目的说清楚
回复

使用道具 举报

 楼主| 发表于 2023-3-7 11:38:38 | 显示全部楼层
xyp1964 发表于 2023-3-7 11:30
先把目的说清楚

目的就是执行时不报错、现在是大部分时候报错、偶尔可以用
回复

使用道具 举报

发表于 2023-3-7 11:50:41 | 显示全部楼层
xiaocainiao 发表于 2023-3-7 11:38
目的就是执行时不报错、现在是大部分时候报错、偶尔可以用

(defun abc (str / lst a b)
  ;; (abc "节点01") → ("节点" "01")
  (setq        lst (vl-string->list str)
        a   (vl-remove-if-not '(lambda (x) (> x 160)) lst)
        b   (vl-remove-if '(lambda (x) (> x 160)) lst)
  )
  (list (vl-list->string a) (vl-list->string b))
)
回复

使用道具 举报

 楼主| 发表于 2023-3-7 11:57:40 | 显示全部楼层
xyp1964 发表于 2023-3-7 11:50
(defun abc (str / lst a b)
  ;; (abc "节点01") → ("节点" "01")
  (setq        lst (vl-string->list str ...

谢谢院长、一会我试试
回复

使用道具 举报

发表于 2023-3-7 12:02:14 | 显示全部楼层
xiaocainiao 发表于 2023-3-7 11:25
顺序问题咱先不管他了、主要是程序问题

我试了,把defun放前面不会报错
回复

使用道具 举报

 楼主| 发表于 2023-3-7 12:11:08 | 显示全部楼层
xyp1964 发表于 2023-3-7 11:50
(defun abc (str / lst a b)
  ;; (abc "节点01") → ("节点" "01")
  (setq        lst (vl-string->list str ...

谢谢院长、这个代码对于"节点01"这种的可以、但是“节点-01”的结果就不对了、我那个代码是“节点-01”结果正确、“节点01”会报错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 12:24 , Processed in 0.177451 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表