http://zml84.blog.sohu.com/79553255.html
(vl-load-com) ;;;============================================= ;;;功能:字符串分割 ;;;参数:STR ----欲分割的字符串,支持汉字 ;;; LST ----分隔符表,大小写敏感 ;;;日期:zml84 于 2008-02-19 ;;;示例:(test "1N3.5(2)" '(("N")("(" ")"))) ;;; ===>> ("1" "N" "3.5" "(2)") ;;;示例:(test "abc汉字2(1.5)" '(("汉""字"))) ;;; ===>> ("abc" "汉字" "2(1.5)") (defun
TEST
(STR
LST
/
I
LST2
LST_TMP
STRI
STR_TMP)
(setq
LST2
'())
;_存放结果的变量
(setq
STR_TMP
"")
(while
(/=
STR
"") (if
(>
(ascii(substr
STR
1
1))
159) (setq
STRI
(substr
STR
1
2) STR
(substr
STR
3) ) (setq
STRI
(substr
STR
1
1) STR
(substr
STR
2) ) ) (if
(setq
LST_TMP
(assoc
STRI
LST)) (progn (if
(/=
STR_TMP
"") (setq
LST2 (cons
STR_TMP
LST2) STR_TMP
"" ) ) (cond ((=
1
(length
LST_TMP)) (setq
LST2
(cons
STRI
LST2)) ) ((=
2
(length
LST_TMP)) (if
(setq
I
(vl-string-search
(cadr
LST_TMP)
STR)) (setq
LST2
(cons (strcat
STRI(substr
STR
1
I)
(cadr
LST_TMP)) LST2 ) STR
(substr
STR
(+
1
I
(strlen
(cadr
LST_TMP)))) ) (setq
LST2
(cons
STR
LST2) STR
"" ) ) ) ) ) (setq
STR_TMP
(strcat
STR_TMP
STRI)
) )
)
(if (/=
STR_TMP
"") (setq
LST2
(cons
STR_TMP
LST2))
)
(reverse
LST2) )
|