wgij007 发表于 2025-5-21 08:09:53

请问怎样取指定字符之间的字呢

xxxx zzz 数量 5 个=》 5

请问怎提取 数量与个字符之间的5数量前字符会变,位数也不一样。

llsheng_73 发表于 2025-5-21 08:09:54

wszxf 发表于 2025-5-21 08:27
;;;(get_num "xxxx zzz 数量 5 个"),显示5
;;;(get_num "xxxx zzz 数量 12345 个"),显示12345
;;;(get_ ...

(defun Msubstr(string str1 str2 / n1 n2)
(if(and(=(type string)'str)
       (=(type str1)'str)
       (=(type str2)'str)
       (WCMATCH string(strcat "*"str1"*"str2"*"))
       (<(setq n1(+(vl-string-search str1 string)(strlen str1)))
          (setq n2(vl-string-search str2 string))))
    (substr string (1+ n1)(- n2 n1))
    ""))

(Msubstr "xxxx zzz 数量 5 个""数量" "个")=>" 5 "

wszxf 发表于 2025-5-21 08:27:41

本帖最后由 wszxf 于 2025-5-21 08:31 编辑

;;;(get_num "xxxx zzz 数量 5 个"),显示5
;;;(get_num "xxxx zzz 数量 12345 个"),显示12345
;;;(get_num "xxxx zzz 数量 123456 个大美女"),显示123456
(defun get_num (string / n1 n2)
(setq n1 (vl-string-search "数量" string))
(setq n2 (vl-string-search "个" string))
(atoi (substr string (+ n1 5) (- n2 n1 4)))
)

wzg356 发表于 2025-5-21 12:24:00

我的帖子,wCmath子串

wgij007 发表于 2025-5-22 00:27:29

wszxf 发表于 2025-5-21 08:27
;;;(get_num "xxxx zzz 数量 5 个"),显示5
;;;(get_num "xxxx zzz 数量 12345 个"),显示12345
;;;(get_ ...

这个不知为什么返回是0的

wgij007 发表于 2025-5-22 00:29:24

llsheng_73 发表于 2025-5-21 08:09
(Msubstr "xxxx zzz 数量 5 个""数量" "个")=>" 5 "

可以的,非常感谢
页: [1]
查看完整版本: 请问怎样取指定字符之间的字呢