将具有分隔符的字符串解析为列表 的问题
(StrParse Str Delimiter)<br/><br/><div class="FunctionBox"> 说明:</div><br/>将具有分隔符的字符串解析为列表<br/><br/><div class="FunctionBox"> 函数内容:</div><br/>(defun strParse (Str Delimiter / SearchStr StringLen return n char)<br/> (setq SearchStr Str)<br/> (setq StringLen (strlen SearchStr))<br/> (setq return '())<br/><br/><br/> (while (> StringLen 0)<br/> (setq n 1)<br/> (setq char (substr SearchStr 1 1))<br/> (while (and (/= char Delimiter) (/= char ""))<br/> (setq n (1+ n))<br/> (setq char (substr SearchStr n 1))<br/> ) ;_ end of while<br/> (setq return (cons (substr SearchStr 1 (1- n)) return))<br/> (setq SearchStr (substr SearchStr (1+ n) StringLen))<br/> (setq StringLen (strlen SearchStr))<br/> ) ;_ end of while<br/> (reverse return)<br/>) ;_ end of defun<br/><br/><div class="FunctionBox"> 参数:</div><br/>Str:要解析的字符串<br/>Delimiter :要搜索的分隔符<br/><br/><div class="FunctionBox"> 返回值:</div><br/>一个字符串列表<br/><br/><div class="FunctionBox"> 示例:</div><p><br/>(setq a "Harp,Guiness,Black and Tan")<br/>(StrParse a ",")<br/>返回:<br/>("Harp" "Guiness" "Black and Tan")</p><p>上面的函数是否对于顿号("、")不起作用的 谢谢</p><p>(setq a "Harp、Guiness、Black and Tan")</p><p> (StrParse a "、")</p><p>返回还是</p><p>("Harp、Guiness、Black and Tan")</p> 因为"、"是全角字,而比较时是半角,所以不成功. <p>、 这个占了两个字符 晕 怪不得,一下忘了</p> <p>改了一下好像可以了 没时间自己再想了 将就用着先 嘿嘿</p><p></p><p>(defun C:aab ( / SearchStr StringLen return n char)<br/> (setq Str "aaate、btae12、c45、d313")<br/> (setq Delimiter "、")<br/> (setq SearchStr Str)<br/> (setq StringLen (strlen SearchStr))<br/> (setq return '())<br/> (while (> StringLen 0)<br/> (setq n 1)<br/> (setq char (substr SearchStr 1 2))<br/> (while (and (/= char Delimiter) (/= char ""))<br/> (setq n (1+ n))<br/> (setq char (substr SearchStr n 2))<br/> ) ;_ end of while<br/> (setq return (cons (substr SearchStr 1 (1- n)) return))<br/> (setq SearchStr (substr SearchStr (+ n 2) StringLen))<br/> (setq StringLen (strlen SearchStr))<br/> ) ;_ end of while<br/> (reverse return)<br/>) ;_ end of defun</p> (defun txt-str-split (str x / lst n str-n xlen)(setq xlen (strlen x))
(while (setq n (vl-string-search x str))
(setq str-n (substr str 1 n))
(if (/= str-n "")
(setq lst (cons str-n lst))
)
(setq str (substr str (+ 1 xlen n)))
)
(if (/= str "")
(setq lst (cons str lst))
)
(reverse lst)
)
;;; 定界符分割文字成表,定界符去掉,定界符可以是多字符
(defun t2-str-split (str x / lst n str-n xlen)
(setq xlen (strlen x))
(while (setq n (vl-string-search x str))
(setq str-n (substr str 1 (+ n xlen)))
(if (/= str-n "")
(setq lst (cons str-n lst))
)
(setq str (substr str (+ 1 xlen n)))
)
(if (/= str "")
(setq lst (cons str lst))
)
(reverse lst)
)
;;; 定界符分割文字成表,定界符不去掉,定界符可以是多字符
页:
[1]