弥勒 发表于 2024-1-17 17:54:54

已有 5 人购买  本主题需向作者支付 1 个明经币 才能浏览 购买主题

ZYX2129 发表于 2024-1-17 18:14:32

有意分享,应该本着无私精神。商品交换本着先验货后付款。

MZ_li 发表于 2024-1-18 09:45:31

精致的奸商。霸王条款

llsheng_73 发表于 2024-1-19 16:21:17

本帖最后由 llsheng_73 于 2024-1-19 16:24 编辑

(defun StrType(a / b c d e);;字符串分离全角、符号、字母、数字,存在问题:连续小数点与数字相连不能精确分离数字和小数点
    (setq b(vl-string->list a))
    (while b
      (setq a(car b)b(cdr b)c(last d))
      (if(or(not d)
            (and(< 0 a 32)(< 0 c 32));;非打印字符
            (or(= 46 a)(= 46 c)(and(< 47 a 58)(< 47 c 58)));数字和小数点
            (vl-every'(lambda(x)(vl-some'(lambda(y)(<(car y)x(cadr y)))'((31 48)(57 65)(90 98)(122 129))))(list a c));其它字符包括小数点
            (vl-every'(lambda(x)(vl-some'(lambda(y)(<(car y)x(cadr y)))'((64 91)(96 123))))(list a c));;字母
            (and(> a 128)(> c 128)));;全角字符
      (if(> a 128)(setq d(vl-list*(car b)a d)b(cdr b))(setq d(cons a d)))
      (setq e(cons(reverse d)e)d(if(> a 128)(list(car b)a)(List a))b(if(> a 128)(cdr b)b))))
    (mapcar'vl-list->string(reverse(cons(reverse d)e))))
(vl-remove-if-not 'distof(StrType"免币123交流4.56收费78有理"))=>("123" "4.5" "678")

lzspain 发表于 2024-1-17 19:06:48

连查看内容都要付费?跟百度学的吗?

marcoyuwen 发表于 2024-1-18 07:38:39

一行代码就能解决

蛋疼的东东 发表于 2024-1-18 14:20:24

这就很........

依风听雨 发表于 2024-1-19 12:06:18

佛祖也不纯了

shiy65 发表于 2024-1-19 14:38:24

没看到诚意

shiy65 发表于 2024-1-23 13:26:41

本帖最后由 shiy65 于 2024-1-23 13:27 编辑

逻辑有点复杂
说个简单点的办法,
1. 定义一个判据函数strT
   如果 单个字符串 s 属于 “数字” “小数点” 则返回 “T",否则返回 “nil “
2. 对输入的字符串,从左向右依次提取每一个字符,判断是否是 T
   记录每个符合要求的字符的起始位置(从左边开始计数的位置),
   和连续符合条件的字符长度,
   生成一个字符串提取记录表,列入总记录表,直至字符串最后一个字符为止
3. 按照总提取记录表的提取记录,依次提取,列入提取数字记录表,完成提取。

页: [1] 2
查看完整版本: 去掉文本中的文字,只留数字