明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1433|回复: 4

[函数] 分享两个字符串处理函数SubStrEx、StrLenEx

  [复制链接]
发表于 2022-4-6 21:38:22 | 显示全部楼层 |阅读模式
使用LISP进行字符串处理时,遇到中文时很麻烦,系统自带函数SubStr、StrLen都无法处理带中文的字符串。为此做了两个函数,分享给大家。

  1. (defun SubStrEx(Input Start Len / Result REG DATA MaxIndex);
  2.   ;vbscript.regexp 对象由Microsoft VBScript Regular Expressions5.5提供
  3.   ;保存于c:\windows\system32\vbscript.dll
  4.   ;\S|\s 可以匹配任意字符
  5.   ;Start开始字符串,从1开始(提前要做好类型判断)
  6.   ;Len表示获取到的总长度(提前要做好类型判断)
  7.   (setq Result "")
  8.   (setq Start (1- Start))
  9.   (if (< Start 0)
  10.     (setq Start 0)
  11.     )
  12.   (setq REG (vlax-create-object "vbscript.regexp"))
  13.   (vlax-put-property REG 'Pattern "\\S|\\s")
  14.   (vlax-put-property REG 'Global  :vlax-true);是否全部匹配
  15.   (setq DATA  (vlax-invoke-method REG 'Execute Input))
  16.   (setq MaxIndex (vlax-get-property DATA 'Count))
  17.   (while (and (> Len 0) (< Start MaxIndex))        
  18.     (setq Result (strcat Result (vlax-get-property  (vlax-get-property  DATA 'Item Start) 'Value)))
  19.     (setq Start (1+ Start))
  20.     (setq Len (1- Len))
  21.     )
  22.   (vlax-release-object DATA)
  23.   (vlax-release-object REG)
  24.   Result
  25.   )


  1. (defun StrLenEx(Input / Result REG DATA)
  2.   ;获取字符串的长度
  3.   (setq Result nil)
  4.   (setq REG (vlax-create-object "vbscript.regexp"))
  5.   (vlax-put-property REG 'Pattern "\\S|\\s")
  6.   (vlax-put-property REG 'Global  :vlax-true);是否全部匹配
  7.   (setq DATA (vlax-invoke-method REG 'Execute Input))
  8.   (setq Result (vlax-get-property DATA 'Count))
  9.   (vlax-release-object DATA)
  10.   (vlax-release-object REG)
  11.   Result
  12.   )


评分

参与人数 6明经币 +6 收起 理由
xtjd + 1 赞一个!
songyujie928 + 1 赞一个!
bloodtempt + 1
USER2128 + 1 赞一个!
bssurvey + 1 很给力!
start4444 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-4-6 21:51:07 | 显示全部楼层
好像论坛里面已经有正则表达式相关的函数了
发表于 2022-4-7 10:17:38 | 显示全部楼层
运行不了


本帖子中包含更多资源

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

x
 楼主| 发表于 2022-4-7 11:13:01 | 显示全部楼层
改为这个试一下
(vlax-put-property REG 'Global  -1)
发表于 2022-4-9 11:06:02 | 显示全部楼层
感谢分享中文字符串处理函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-14 14:49 , Processed in 0.195937 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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