常用函数 ,字符串分割,字符串合并
;;字符串分割
;;用法, (str_Split "5+10+A“ ”+“)---》(list"5" "10" "A”)
;**************************************************
(defun str_Split (strkey/ L r)
(setq r (vlax-create-object "vbscript.regexp"))
(vlax-put-property r 'Global 1)
(vlax-put-property r 'Pattern (strcat "([^" key "]+)"))
(vlax-for x (vlax-invoke r 'Execute str) (setq L (cons(vla-get-Value x) L)))
(vlax-release-object r)
(reverse L)
)
;;字符串合并
;;用法 (string join (list "a" "b" "c") "+") --------->"a+b+c"
(defun string_join (lst key / str e)
(setq strs "")
(foreach x lst
(if (= strs "")
(setq strs x)
(setq strs (strcat strskey x))
)
)
strs
)
(defun Split-ZZ (s p / L r)
(setq r (vlax-create-object "vbscript.regexp"))
(vlax-put-property r 'Global 1)
(vlax-put-property r 'Pattern (strcat "([^" p "]+)"))
(vlax-for x (vlax-invoke r 'Execute s)
(setq L (cons (vla-get-Value x) L))
)
(vlax-release-object r)
(reverse L)
)
(Split-ZZ "BL-01=500x300""=|x");返回'("BL-01" "500" "300") 凑热闹的
字符串合并
(defun strcat+ (lis / SYMBOL X)
(if (vl-every 'numberp lis)
(apply '+ lis)
(apply 'strcat (mapcar 'vl-princ-to-string lis))
)
) 感谢大佬分享~ 本帖最后由 tryhi 于 2023-6-16 15:46 编辑
作为一个拆分函数,我感觉不太好用
1、不支持多个字符作为拆分
(str_Split "5+-10+A" "+-") ;>> ("5" "10" "A”)
期望值应为("5" "10+A")
2、反斜杠拆分报错
(str_Split "5\\10\\A" "\\") ;>>报错
3、不支持空字符拆分
(str_Split "510A" "") ;>>报错
期望值应为("5" "1" "0" "A")
4、不支持拆分出空字符
(str_Split "5++10+A" "+") ;>> ("5" "10" "A”)
期望值应为("5" "" "10" "A")
5、vbscript.regexp组件经测试有很多电脑不能使用
合并函数中的strs使用了全局变量,容易导致外部同名函数异常,也是有问题的
好东西,立马收藏 本帖最后由 vitalgg 于 2023-6-17 16:18 编辑
tryhi 发表于 2023-6-16 15:37
作为一个拆分函数,我感觉不太好用
感谢大佬
tryhi 发表于 2023-6-16 15:37
作为一个拆分函数,我感觉不太好用
第3个,空字符的不好拆吧,汉字 搞了一个不常见的方式,分割字符串
(defun str_split (str key)
(if (/= key "")
(progn
(while (vl-string-search key str)
(setq str (vl-string-subst "\" \"" key str))
)
(read (strcat "(\"" str "\")"))
)
str
)
) 1028695446 发表于 2023-6-16 10:29
(defun Split-ZZ (s p / L r)
(setq r (vlax-create-object "vbscript.regexp"))
(vlax-put-property ...
这个,我正准备做,发现了,好用,点赞
页:
[1]
2