设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 59|回复: 6

[求助] 【已解决】求xdrx_string_split源码

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 6 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 JHX948954875 于 2020-5-25 16:18 编辑

求xdrx_string_split源码!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 6 天前 | 显示全部楼层
  1. (defun xd:string:split (str elt)
  2.   (xd::string:regexps (strcat "[^" elt "]+") str "")
  3. )



XD:STRING:SPLIT
_$ (XD:STRING:SPLIT "abc,edf,gfg" ",")
("abc" "edf" "gfg")
_$

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 3635个

财富等级: 富可敌国

发表于 5 天前 | 显示全部楼层
这是Lee Mac的程序,一般来说也够了。
  1. (defun LM:str->lst (str del / len lst pos)
  2.   (setq len (1+ (strlen del)))
  3.   (while (setq pos (vl-string-search del str))
  4.     (setq lst (cons (substr str 1 pos) lst)
  5.           str (substr str (+ pos len))
  6.     )
  7.   )
  8.   (reverse (cons str lst))
  9. )

评分

参与人数 1D豆 +5 收起 理由
newer + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 5 天前 | 显示全部楼层
Lisphk 发表于 2020-5-21 22:45
XD:STRING:SPLIT
_$ (XD:STRING:SPLIT "abc,edf,gfg" ",")
("abc" "edf" "gfg")

谢谢,昨天在论坛找了半天,实在找不到了,文件xdrx_api_manual_2017-1208.chm里也没有这个函数。

点评

用 regexps 一搜就搜到了 (XD::String:RegExpS)对字符串进行正则表达式匹配查找5 个回复 - 2439 次查看 2013-7-2 21:34 - XDSoft - 开源函数库 多用正则表达式,字符串万能函数,省你编好多代码  详情 回复 发表于 5 天前
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 5 天前 | 显示全部楼层
原地踏步 发表于 2020-5-22 09:02
这是Lee Mac的程序,一般来说也够了。

谢谢,学习了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
本帖最后由 muwind 于 2020-5-23 23:30 编辑

(defun LM:str->lst (str del / len lst pos)
  (vl-load-com)
  (setq len (1+ (strlen del)))
  (while (setq pos (vl-string-search del str))
         (setq lst (cons (substr str 1 pos) lst)
               str (substr str (+ pos len))
    )
  )
  (reverse (cons str lst))
)
(defun fysl (str s  / n  sl sx len pos pos0 posx  strx poslist lst)
  (setq sl (LM:str->lst s "|"));设定通道字符为"|",自行修改,适用于单字符
  (setq poslist '())
  (foreach sx sl
    (progn
      (setq len (strlen sx)) ;查找字符长度
      (setq strx str)
      (setq posx 0)
      (while (setq pos (vl-string-search sx strx)) ;查找字符串位置
                (setq poslist (cons (vl-list* (+ pos 1 posx) len) poslist)) ;位置和长度构成点对,添加到表
             (setq posx (+ pos posx len))
             (setq  strx    (substr strx (+ pos len 1)));新字符串
      )
    )
  )
  (setq poslist
        (vl-sort poslist (function  (lambda (e1 e2) (< (car E1) (car E2)))))) ;位置排序
  (setq  n 0)
  (setq  pos0 1)
  (while (setq  posn (nth n poslist ));取得第n个标识符的位置(2 . 2)
         (setq lst (cons (substr str pos0 (- (car posn) pos0)) lst))
         ;获取1到第一位置的的字符串传到表中
         (setq   pos0 (+ (car posn) (cdr posn))
                 n (+ n 1)
         )
  )
  (if (/= (setq  str (substr str pos0)) "")
      (reverse (cons str lst))
      (reverse lst)
  )
)

根据Lee Mac函数增加通道支持,自己玩儿用的,昨晚的只能挨个干活,修改了下现在没有顺序的要求。比如:
_$ (fysl "我.爱,你" ",|.")
("我" "爱" "你")
_$ (fysl "我..爱,.你" "..|,.")
("我" "爱" "你")
_$

评分

参与人数 1D豆 +20 收起 理由
XDSoft + 20 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

点击这里给我发消息

已领礼包: 145个

财富等级: 日进斗金

发表于 5 天前 | 显示全部楼层
JHX948954875 发表于 2020-5-22 12:32
谢谢,昨天在论坛找了半天,实在找不到了,文件xdrx_api_manual_2017-1208.chm里也没有这个函数。

用 regexps 一搜就搜到了
(XD::String:RegExpS)对字符串进行正则表达式匹配查找
5 个回复 - 2439 次查看

2013-7-2 21:34 - XDSoft - 开源函数库

多用正则表达式,字符串万能函数,省你编好多代码

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )  

GMT+8, 2020-5-27 07:46 , Processed in 0.161006 second(s), 44 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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