wzg356 发表于 2023-3-11 14:30:03

几个字符串分割函数

本帖最后由 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))
)



669423907 发表于 2023-3-12 15:04:35

非常感谢楼主分享好源码

紫苏炒黄瓜 发表于 2023-3-12 16:19:47

支持支持!谢楼主分享!
页: [1]
查看完整版本: 几个字符串分割函数