明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 635|回复: 0

[讨论] 解析字符串为表,请看看我修改后的有没什么问题

[复制链接]
发表于 2015-9-15 19:37 | 显示全部楼层 |阅读模式
在明经以前有个函数 可以实现,将字符串按特定字符转换为表,函数如下:
;;; 解析字符串为表(函数来自明经通道转载)
;;; ---------------------------------------------------------------------------------
  (defun strParse  (Str       Delimiter
      /       SearchStr
      StringLen return
      n       char)
    (setq SearchStr Str)
    (setq
      StringLen (strlen SearchStr))
    (setq return '())
    (while (> StringLen 0)
      (setq n 1)
      (setq char
      (substr SearchStr 1 1))
      (while
(and (/= char Delimiter)
      (/= char ""))
  (setq n (1+ n))
  (setq char
  (substr SearchStr
   n
   1))
  ) ;_ end of while
      (setq return
      (cons
        (substr SearchStr
         1
         (1- n))
        return))
      (setq SearchStr
      (substr SearchStr
       (1+ n)
       StringLen))
      (setq StringLen
      (strlen SearchStr))
      ) ;_ end of while
    (reverse return)
    ) ;_ end of defun

这个在秋枫大侠的 LISP安装制作程序中文有个lisp文件引用了这个函数,
我在借用这个LISP文件的时候发现,用来制作2010版本的安装文件,
当支持文件夹有中文目录的时候,解析出来的表有问题,中文目录就那么悄悄的溜走了
我做了入下修改:
;;; 解析字符串为表(修改后)
;;; ---------------------------------------------------------------------------------
  (defun strParse  (Str       Delimiter
      /       SearchStr
      StringLen return
      n       char)
    (setq SearchStr Str)
    (setq StringLen (strlen SearchStr))
    (setq return '())
     (while (> StringLen 0)
        (setq n (vl-string-search  Delimiter SearchStr))
        (setq return (cons (substr SearchStr   1   n  )  return))
        ( IF(> StringLen (+ n 2) )
           (PROGN
            (setq SearchStr    (substr SearchStr  (+ n 2)  StringLen))
            (setq       StringLen     (strlen SearchStr))
           )
            (setq StringLen   0)              
         )
       ) ;_ end of while
    (reverse return)  ;将表的元素顺序倒置后返回
    ) ;_ end of defun
"觉得好,就打赏"
还没有人打赏,支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 04:06 , Processed in 0.184729 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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