明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 945|回复: 5

[提问] 如何统计字符串中的"\"的个数?

[复制链接]
发表于 2019-11-25 21:18:06 | 显示全部楼层 |阅读模式
如何统计字符串中的"\"的个数?
譬如:"aa\bbb\1\e"

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-11-25 22:09:50 | 显示全部楼层
只是统计数量的话很多办法.例如

(setq str "aa\\bbb\\1\\e");字符串中单个斜杠应用双斜杠代替,转义符
(setq num        (length (vl-remove-if '(lambda (x) (/= x 92))(vl-string->list str))))
先将字符串转换成ASCII码列表,然后删除所有不是\的元素,剩下的表长度就是\的数量
 楼主| 发表于 2019-11-25 22:44:40 | 显示全部楼层
wyl219 发表于 2019-11-25 22:09
只是统计数量的话很多办法.例如

(setq str "aa\\bbb\\1\\e");字符串中单个斜杠应用双斜杠代替,转义符

要是字符串中就是\而不是\\呢?
发表于 2019-11-25 22:58:03 | 显示全部楼层
etoxp 发表于 2019-11-25 22:44
要是字符串中就是\而不是\\呢?

那就别用lisp,用个bat啥的。
一个语言统计自己的转义符,不是跟自己过不去吗。
发表于 2019-11-26 03:45:16 | 显示全部楼层
本帖最后由 wyl219 于 2019-11-26 03:56 编辑
etoxp 发表于 2019-11-25 22:44
要是字符串中就是\而不是\\呢?

\本来就是转义符的标志,比如本来text对象的内容是\1,那么用entget获取到的就是"\\1",所以并没什么影响.
例如
(setq dxf_1 (cdr (assoc 1 (entget (car (entsel))))))
点选一个内容为\1的text对象,cad返回的结果是:

选择对象: "\\1"


而实际上,如果你把字符串定义成"aa\bbb\1\e"的话,如下:
(setq dxf_1 "aa\bbb\1\e")
(setq ed  (entget (setq en (car (entsel)))))
(entmod (subst (cons 1 dxf_1) (assoc 1 ed) ed))


该字符串被修改成这个样子



本帖子中包含更多资源

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

x
发表于 2019-11-26 14:53:50 | 显示全部楼层
本帖最后由 1291500406 于 2019-11-26 16:33 编辑
etoxp 发表于 2019-11-25 22:44
要是字符串中就是\而不是\\呢?

cad不可能返回值是"aa\bbb\1\e"字符串     (alert "aa\\bbb\\1\\e")  (alert "aa\bbb\1\e")
cad不可能有(. .)两个点的表
很多都不可能
就像lisp永远成为不了主流编程语言

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

本版积分规则

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

GMT+8, 2025-5-18 14:13 , Processed in 0.166142 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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