明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 801|回复: 3

[函数] 几个字符串分割函数

[复制链接]
发表于 2023-3-11 14:30 | 显示全部楼层 |阅读模式
本帖最后由 wzg356 于 2023-3-11 18:17 编辑

字符串分割论坛很多了,实际使用中也难直接套用,这里算是给新手分享经验

第一个函数功能用的较多,以前一直用“老黄老师”收集的字符串分割parse4,我用时函数名都懒得改,这里算仿写并部分扩展了,效率还行

;字符串分割成表
;str要分割的字符串
;delim用于分割的字符集合,可以汉字,每个字符/汉字均作分割符
;注释的语句取消注释则返回的表中包含分割符组成的字串
;扩展用于消除特定字符,分离数字/字母等
;(mystrparse2 "AA6aB我3bCC55c" "我0123456789")=("AA" "aB" "bCC" "c")
(defun mystrparse2 (str delim / str1 str2 L)
        (setq str (reverse(vl-string->list str)))
        (setq str1 "" str2 "")
        (while(setq a(car str))
                (if(> a 160)
                        (setq a(vl-list->string(list(cadr str)a))str(cddr str))
                        (setq a(chr a)str(cdr str))
                )
                (if (vl-string-search a delim)
                        (setq ;str2(strcat a str2)
                                l(cons str1 l) str1 ""
                        )
                        (setq str1(strcat a str1)
                                ;l(cons str2 l)str2 ""
                        )
                )
        )        
        (vl-remove ""(cons str2 (cons str1 l)))
)


;字符末尾数字分离
;(strparsenum1 "0a3b55c801")=("0a3b55c" "801")
(defun strparsenum1 (str / n)
        (setq n(strlen (vl-string-right-trim "0123456789"str)))
    (list(substr str 1 n)(substr str(1+ n)))
)
;字符前数字分离
;(strparsenum2 "500a3b55c")=("500" "a3b55c")
(defun strparsenum2 (str / n)
        (setq n(strlen (vl-string-left-trim "0123456789"str)))
    (list(substr str 1(- (strlen str)n))(substr str (- (strlen str) n -1)))
)
;字符前后数字分离
;(setq l(strparsenum2 "a3b55c801") l(cons(car l)(strparsenum1(cadr l))))
;=("" "a3b55c" "801")


;以字符串为分隔符分割字符串成表
;明经收集小改
;;By Longxin 明经通道 2006.03
(defun xl:read->biao (str fgf / biao n s1 i)
  (setq biao nil n(strlen fgf))
  (setq i (vl-string-search fgf str))
  (while i
    (setq s1 (substr str 1 i))
    (setq str (substr str (+ 1 n i)))
    (setq biao (cons s1 biao))
    (setq i (vl-string-search fgf str))
  )
  (reverse(cons str biao))
)



点评

楼主最近分享的两个帖子都非常实用,图形替换已用到工作中,这个也有用到的时候.特别感谢!  发表于 2023-3-11 18:29

评分

参与人数 3明经币 +3 金钱 +10 收起 理由
bssurvey + 1 赞一个!
lee50310 + 1 赞一个!
tigcat + 1 + 10 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-3-12 15:04 来自手机 | 显示全部楼层
非常感谢楼主分享好源码
发表于 2023-3-12 16:19 | 显示全部楼层
支持支持!谢楼主分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 05:28 , Processed in 0.228268 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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