明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1205|回复: 10

[函数] 常用函数 ,字符串分割,字符串合并

[复制链接]
发表于 2023-6-16 10:09 | 显示全部楼层 |阅读模式

;;字符串分割
;;用法, (str_Split "5+10+A“ ”+“)---》(list  "5" "10" "A”)
;**************************************************
(defun str_Split (str  key  / 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 strs  key x))
    )
   )
  strs
)


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-6-16 10:29 | 显示全部楼层
(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")
发表于 2023-6-16 11:28 | 显示全部楼层
凑热闹的
字符串合并
  1. (defun strcat+ (lis / SYMBOL X)
  2.   (if (vl-every 'numberp lis)
  3.     (apply '+ lis)
  4.     (apply 'strcat (mapcar 'vl-princ-to-string lis))
  5.   )
  6. )
发表于 2023-6-16 12:56 | 显示全部楼层
感谢大佬分享~
发表于 2023-6-16 15:37 | 显示全部楼层
本帖最后由 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使用了全局变量,容易导致外部同名函数异常,也是有问题的

发表于 2023-6-16 16:04 | 显示全部楼层
好东西,立马收藏
发表于 2023-6-16 22:55 | 显示全部楼层
本帖最后由 vitalgg 于 2023-6-17 16:18 编辑
tryhi 发表于 2023-6-16 15:37
作为一个拆分函数,我感觉不太好用








感谢大佬


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
tryhi + 1 很给力!

查看全部评分

发表于 2023-6-17 08:41 | 显示全部楼层
tryhi 发表于 2023-6-16 15:37
作为一个拆分函数,我感觉不太好用

第3个,空字符的不好拆吧,汉字
发表于 2023-6-17 17:14 | 显示全部楼层
搞了一个不常见的方式,分割字符串
  1. (defun str_split (str key)
  2.   (if (/= key "")
  3.     (progn
  4.       (while (vl-string-search key str)
  5.         (setq str (vl-string-subst "\" \"" key str))
  6.       )
  7.       (read (strcat "(\"" str "\")"))
  8.     )
  9.     str
  10.   )
  11. )
发表于 2023-6-18 15:15 | 显示全部楼层
1028695446 发表于 2023-6-16 10:29
(defun Split-ZZ        (s p / L r)
  (setq r (vlax-create-object "vbscript.regexp"))
  (vlax-put-property ...

这个,我正准备做,发现了,好用,点赞
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 14:02 , Processed in 3.117528 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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