找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 395|回复: 7

[求助] 字符串处理

[复制链接]

已领礼包: 10个

财富等级: 恭喜发财

发表于 2020-10-8 20:24:33 | 显示全部楼层 |阅读模式

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

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

×
这样一个字符串
“das2-das-daa-sada”
先在需要
1.提取第一个-号之前的字符即”das2”
2.提取第一个-号和最后一个-号之间的字符“das-daa”
3.提取最后一个-号之后的字符“sada”
求大神帮忙
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 5188个

财富等级: 富甲天下

发表于 2020-10-8 21:44:17 | 显示全部楼层
先把字符串转化为表
http://bbs.xdcad.net/forum.php?mod=viewthread&tid=127470&extra=&highlight=%D7%D6%B7%FB%B4%AE%2B%B1%ED&page=1
再把表中第一个和最后一个提出来,中间的用“-”连接起来就行了。

点评

谢谢,思路很好,刚刚在论坛里面找到了类似解决方法xd::string:regexps 这个函数可以解决  详情 回复 发表于 2020-10-8 22:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10个

财富等级: 恭喜发财

 楼主| 发表于 2020-10-8 22:08:50 | 显示全部楼层
原地踏步 发表于 2020-10-8 21:44
先把字符串转化为表
http://bbs.xdcad.net/forum.php?mod=viewthread&tid=127470&extra=&highlight=%D7%D6 ...

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

使用道具 举报

已领礼包: 3727个

财富等级: 富可敌国

发表于 2020-10-8 23:39:41 | 显示全部楼层
   (setq zfc "das2-das-daa-sada")
   (setq jgz nil)
   (setq i 0)
   (while (setq n (vl-string-search "-" zfc i))
      (setq jgz (cons n jgz))
      (setq i (1+ n))
   )
   (setq jgz (reverse jgz))
   (setq fhz (list (substr zfc 1 (car jgz))
                   (substr zfc (+ (car jgz) 2) (- (last jgz) (car jgz) 1))
                   (substr zfc (+ (last jgz) 2))
             )
   )
   (princ "\fhz=")(princ fhz)

点评

用不上循环吧?直接字符串运算就可以啊  详情 回复 发表于 2020-10-9 00:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1861个

财富等级: 堆金积玉

发表于 2020-10-9 00:36:48 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-10-9 01:07 编辑
dnbcgrass 发表于 2020-10-8 23:39
(setq zfc "das2-das-daa-sada")
   (setq jgz nil)
   (setq i 0)

用不上循环吧?直接字符串运算就可以啊
_$  (setq zfc "das2-das-daa-sada")
(setq str1 (substr zfc 1 (vl-string-position (ascii "-") zfc)))
(setq zfc_rever (vl-list->string (reverse (vl-string->list  zfc))))
(setq str3  (vl-list->string (reverse (vl-string->list (substr zfc_rever 1 (vl-string-position (ascii "-") zfc_rever))))))
(setq str2 (substr zfc (+ 2 (strlen str1)) (- (strlen zfc) (strlen str1) (strlen str3) 2)))
"das2-das-daa-sada"
"das2"
"adas-aad-sad-2sad"
"sada"
"das-daa"
_$

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

使用道具 举报

已领礼包: 3727个

财富等级: 富可敌国

发表于 2020-10-9 08:26:54 | 显示全部楼层
   (setq zfc "das2-das-daa-sada")
   (setq zfc1 (substr zfc 1 (vl-string-search "-" zfc 0)))
   (setq zfcr (vl-list->string (reverse (vl-string->list zfc))))
   (setq zfc3 (substr zfcr 1 (vl-string-search "-" zfcr 0)))
   (setq zfc3 (vl-list->string (reverse (vl-string->list zfc3))))
   (setq zfc2 (vl-string-subst "" (strcat zfc1 "-") zfc))
   (setq zfc2 (vl-string-subst "" (strcat "-" zfc3) zfc2))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3727个

财富等级: 富可敌国

发表于 2020-10-9 09:05:46 | 显示全部楼层
本帖最后由 dnbcgrass 于 2020-10-9 09:09 编辑

   ;不用while
   (setq zfc "das2-das-daa-sada")
   (setq i -1)
   (setq jgb (vl-remove 'nil (mapcar '(lambda(x)
                                         (setq i (1+ i))
                                         (if (= x (ascii "-")) i nil)
                                      )
                                      (vl-string->list zfc)
                             )
             )
   )
   (setq fhz (list (substr zfc 1 (car jgz))
                   (substr zfc (+ (car jgz) 2) (- (last jgz) (car jgz) 1))
                   (substr zfc (+ (last jgz) 2))
             )
   )
   (princ "\fhz=")(princ fhz)
   (princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3727个

财富等级: 富可敌国

发表于 2020-10-9 09:41:05 | 显示全部楼层
本帖最后由 dnbcgrass 于 2020-10-9 09:43 编辑

   ;不用循环
   (setq zfc "das2-das-daa-sada")
   (setq zfclsit (mapcar '(lambda(x)(chr x)) (vl-string->list zfc)))
   (setq zfc1 (vl-string-subst "" (apply 'strcat (member "-" zfclsit)) zfc))
   (setq zfc3 (vl-string-subst "" (apply 'strcat (reverse (member "-" (reverse zfclsit)))) zfc))
   (setq zfc2 (vl-string-subst "" (strcat "-" zfc3) (vl-string-subst "" (strcat zfc1 "-") zfc)))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 02:52 , Processed in 0.189793 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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