明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1756|回复: 4

[源码] 不用ASCII,把字符串分成单个汉字或其余单字节字符

  [复制链接]
发表于 2021-1-28 16:23:37 | 显示全部楼层 |阅读模式
  1. ;;;;;字符串粉碎;;;;;;;;;;by 菜卷鱼 2021.01.28
  2. (defun smash (str / l s g1 mash)
  3.   (setq l (strlen str))
  4.   (setq s 1)
  5.   (while (<= s l)
  6.     (setq g1 (substr str s 1))
  7.     (if  (wcmatch (vl-prin1-to-string g1) "*`?")
  8.       (setq g1 (substr str s 2)
  9.       s  (+ s 2)
  10.       )
  11.       (setq s (1+ s))
  12.     )
  13.     (setq mash (cons g1 mash))
  14.   )
  15.   (reverse mash)
  16. )



举例:(smash "嗯嗯,吃早餐的时候,买点可乐,你*#@!……&*)")
返回:("嗯" "嗯" "," "吃" "早" "餐" "的" "时" "候" "," "买" "点" "可" "乐" "," "你" "*" "#" "@"
"!" "…" "…" "&" "*" ")")
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2021-3-1 16:46:21 | 显示全部楼层
本帖最后由 菜卷鱼 于 2021-3-1 16:47 编辑

还是用正则保险一点,substr 容易报错
  1. (defun charset (str1 / lst matchcollect reg)
  2.   (setq reg (vlax-create-object "vbscript.regexp"))    ;创建正则表达式
  3.   (vlax-put-property reg 'global -1)        ;是否匹配全部 (-1是 ,0 不是)
  4.   (vlax-put-property reg 'Multiline -1)        ;是否多行匹配 (-1是 ,0 不是)
  5.   (vlax-put-property reg 'IgnoreCase -1);忽略大小写 (-1是 ,0 不是)
  6.   (vlax-put-property reg 'pattern "[^\W]")
  7.   (if (vlax-invoke-method reg 'test str1)
  8.     (progn (setq matchcollect (vlax-invoke-method reg 'Execute str1))
  9.            (vlax-for match_item        matchcollect
  10.              (setq
  11.                lst (cons (eval (vlax-get-property match_item 'value)) lst)
  12.              )
  13.            )
  14.     )
  15.   )
  16.   (vlax-release-object reg)                ;释放内存
  17.   (reverse lst)
  18. )

回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-29 17:39:21 | 显示全部楼层
本帖最后由 jun353835273 于 2021-1-29 17:51 编辑

你是怎么发现的,我电脑返回("? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "? "*" "#" "@" "?
发表于 2021-1-30 07:20:35 | 显示全部楼层
请问与字体文件有关吗?我的电脑返回:
("嗯" "嗯" "," "吃" "早" "餐" "的" "时" "候" "," "买" "点" "可" "乐" "," "你" "*" "#" "@"
"!" "\\" "U" "+" "2" "0" "2" "6" "\\" "U" "+" "2" "0" "2" "6" "&" "*" ")")
 楼主| 发表于 2021-1-30 09:03:12 | 显示全部楼层
wrf610051 发表于 2021-1-30 07:20
请问与字体文件有关吗?我的电脑返回:
("嗯" "嗯" "," "吃" "早" "餐" "的" "时" "候" "," "买" "点" " ...

哈哈哈,你们应该是从当行或者多行文字里直接读取的文字吧??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-10 05:54 , Processed in 0.173530 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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