菜卷鱼
发表于 2020-6-28 15:12:41
很久之前就看到了这个帖子,觉得正则用来字符串分割很厉害,
由于不懂正则,还是自己用lisp写了一个,
今天学了一下正则,发现楼主的这个正则split根本不能用,
比如 (split "aaaaaaabccccccc" "abc")
本应该分割成 ( "aaaaaa""cccccc")
但是正则的返回错误,因为它把所有的a、b、c都干掉了,不管你abc的长短跟顺序
yxp
发表于 2020-7-1 05:18:14
菜卷鱼 发表于 2020-6-28 15:12
很久之前就看到了这个帖子,觉得正则用来字符串分割很厉害,
由于不懂正则,还是自己用lisp写了一个,
今 ...
已修正。效率也提高不少。
烟盒迷唇
发表于 2020-9-30 10:45:43
好东西,不用正则也可以。
fangmin723
发表于 2025-1-2 09:54:46
vectra 发表于 2018-4-13 21:51
EASY!
(p-string-tokenize-m "grdstjxftkgymdmttfixftdmsdusxftn4aysjrtixfttoot.or" "xft")
("grds" "j" "" "" "kgymdm" "" "" "i" "" "" "dmsdus" "" "" "n4aysjr" "i" "" "" "" "oo" ".or")
(p-string-tokenize "grdstjxftkgymdmttfixftdmsdusxftn4aysjrtixfttoot.or" "xft")
("grdstj" "ftkgymdmttfi" "ftdmsdus" "ftn4aysjrti" "fttoot.or")
kozmosovia
发表于 2025-1-2 14:40:12
fangmin723 发表于 2025-1-2 09:54
(p-string-tokenize-m "grdstjxftkgymdmttfixftdmsdusxftn4aysjrtixfttoot.or" "xft")
("grds" "j" "" " ...
那个版本只支持一个字符做分割符。要支持多个字符,得另外写,也就不能用vl-string->list转表处理了。(defun tt (txt sep / POS)
(if (= sep "")
(list txt)
(if (setq POS (vl-string-search SEP txt))
(cons (substr txt 1 POS)
(tt
(substr txt (+ (strlen SEP) POS 1))
SEP
)
)
(list txt)
)
)
)
fangmin723
发表于 2025-1-3 07:59:45
kozmosovia 发表于 2025-1-2 14:40
那个版本只支持一个字符做分割符。要支持多个字符,得另外写,也就不能用vl-string->list转表处理了。
谢谢大佬解惑
tanxindong
发表于 2025-1-28 09:12:56
好东西,天天来论坛,天天在进步