找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1262|回复: 5

[字符串] (XD::String:SplitbyNum)分割字符串的字母和数字

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-12-16 12:53:23 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::String:SplitbyNum
调用格式: (XD::String:SplitbyNum str)
参数说明: str ------ 字符串
返回值:
函数简介: 分割字符串的字母和数字
函数来源: 原创
函数作者: marting
适用版本: 不限 
最后更新时间: 2018-12-16
备注: -
演示图片: -

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

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

×
  1. (defun XD::String:SplitbyNum (str / lst test rslt num tmp)
  2.   (setq        lst  (vl-string->list str)
  3.         test (chr (car lst))
  4.   )
  5.   (if (< 47 (car lst) 58)
  6.     (setq num T)
  7.   )
  8.   (while (setq lst (cdr lst))
  9.     (if        num
  10.       (cond ((= 46 (car lst))
  11.              (if (and (cadr lst)
  12.                       (setq tmp (strcat "0." (chr (cadr lst))))
  13.                       (numberp (read tmp))
  14.                  )
  15.                (setq rslt (cons (read test) rslt)
  16.                      test tmp
  17.                      lst  (cdr lst)
  18.                )
  19.                (setq rslt (cons (read test) rslt)
  20.                      test "."
  21.                      num  nil
  22.                )
  23.              )
  24.             )
  25.             ((< 47 (car lst) 58)
  26.              (setq test (strcat test (chr (car lst))))
  27.             )
  28.             (t
  29.              (setq rslt        (cons (read test) rslt)
  30.                    test        (chr (car lst))
  31.                    num        nil
  32.              )
  33.             )
  34.       )
  35.       (if (< 47 (car lst) 58)
  36.         (setq rslt (cons test rslt)
  37.               test (chr (car lst))
  38.               num  T
  39.         )
  40.         (setq test (strcat test (chr (car lst))))
  41.       )
  42.     )
  43.   )
  44.   (if num
  45.     (setq rslt (cons (read test) rslt))
  46.     (setq rslt (cons test rslt))
  47.   )
  48.   (reverse rslt)
  49. )


命令: (mapcar '(lambda(x)(xd::string:splitbynum x)) '("TF-NT5-1" "TF-NT5-2"
"TF-NT5-11" "TF-NT6-1" "TF-NT6-2" "TF-NT8-1"))
(("TF-NT" 5 "-" 1) ("TF-NT" 5 "-" 2) ("TF-NT" 5 "-" 11) ("TF-NT" 6 "-" 1)
("TF-NT" 6 "-" 2) ("TF-NT" 8 "-" 1))

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

已领礼包: 586个

财富等级: 财运亨通

发表于 2019-4-26 17:15:36 | 显示全部楼层
本帖最后由 王鹏_pBZlo 于 2019-4-28 16:03 编辑

;;分割中文,数字,字母及其它字符;;字符"."只在前后均为数字时才被认为是小数点,其余均认为是字母
(defun split_str(ostr / typ ctyp cstr addstr elist)        ;;中文,数字,字母及其它字符分离
        (setq elist nil cstr "")
        (while (/= "" ostr)
                (cond         ((> (ascii ostr) 128)(setq typ 1 addstr (substr ostr 1 2) ostr (substr ostr 3)))
                        ((< 47 (ascii ostr) 58) (setq typ 2 addstr (substr ostr 1 1) ostr (substr ostr 2)))
                        ((= (ascii ostr) 46) (setq typ 3 addstr (substr ostr 1 1) ostr (substr ostr 2)))
                        (t (setq typ 4 addstr (substr ostr 1 1) ostr (substr ostr 2)))
                )
                (if (= typ 3) (if (and (= ctyp 2) (< 47 (ascii ostr) 58)) (setq typ 2) (setq typ 4)))
                (if (/= typ ctyp)
                    (progn (if (/= "" cstr) (setq elist (append elist (list cstr)))) (setq cstr addstr ctyp typ))                        
                    (setq cstr (strcat cstr addstr))
                )
        ) (append elist (list cstr))
)

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

使用道具 举报

已领礼包: 1667个

财富等级: 堆金积玉

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

使用道具 举报

已领礼包: 4365个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 8711个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 15:19 , Processed in 0.403208 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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