乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: shakuhachi

[编程交流] 简单abc lisp

[复制链接]

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:35:00 | 显示全部楼层
 
1+
 
  1. (vl-string-right-trim "0" (rtos x))
回复

使用道具 举报

11

主题

36

帖子

25

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 09:37:50 | 显示全部楼层
(setq x 15.0)
(vl字符串右微调“0”(rtos x))
我得到的“1'-3”值需要是15
 
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:41:47 | 显示全部楼层
 
然后可能需要有条件地将值-->>解析为所需的格式。
 
也许这将有助于:
 
  1. (defun FEET (s)
  2. ;; © RenderMan, 2011
  3. (substr s 1 (vl-string-search "'" s)))

 
从字符串中提取英寸:
  1. (defun INCH  (s / i)
  2. ;; © RenderMan, 2011
  3. (substr s (setq i (+ 2 (vl-string-search "-" s))) (- (strlen s) i)))

 
示例:
 
  1. _$ (feet "10'-11"")
  2. "10"
  3. _$ (feet "10000'-11"")
  4. "10000"
  5. _$ (inch "10'-11"")
  6. "11"
  7. _$ (inch "10'-1111"")
  8. "1111"
  9. _$

 
HTH公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:44:30 | 显示全部楼层
 
  1. (vl-string-right-trim ".0" (rtos x 2))
回复

使用道具 举报

11

主题

36

帖子

25

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 09:47:56 | 显示全部楼层
也不起作用。
尝试:
 
命令:(setq x 1510.0)
1510
命令:(vl string right trim.0“(rtos x 2))
"151"
 
 
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:50:10 | 显示全部楼层
它的格式是“1510.0”还是“1'-3”???
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:53:58 | 显示全部楼层
  1. (defun supp0 (str / a )
  2.      (setq a (reverse (vl-string->list str)))
  3.       (while (= (car a) 48)
  4.                    (setq a (cdr a))
  5.                    )
  6.        (setq a (if (= (car a) 46)(cdr a) a))
  7. (vl-list->string (reverse a))
  8.      )

 
(补充0“5.40”)
"5.4"
(supp0(rtos 6.4800 2))
"6.48"
(增刊“7.514500”)
"7.5145"
(setq x 1510.0)
(supp0(rtos x 2))
"1510"
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:57:52 | 显示全部楼层
 
哦,接得好,我忽略了vl弦修剪的行为。
 
快速修复方法是:
 
  1. (vl-string-right-trim "." (vl-string-right-trim "0" (rtos x 2)))

 
但这仍然假设DIMZIN设置为除8之外的其他值(其中尾部的零无论如何都会被删除)。
 
所以这可能更好:
 
  1. (defun _TrimTrailingZeros ( s )
  2.    (if (vl-string-position 46 s nil t)
  3.        (vl-string-trim "." (vl-string-right-trim "0" s))
  4.        s
  5.    )
  6. )

 
DIMZIN=0
  1. _$ (_TrimTrailingZeros (rtos 1510.0 2))
  2. "1510"

 
DIMZIN=8
  1. _$ (_TrimTrailingZeros (rtos 1510.0 2))
  2. "1510"
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:59:09 | 显示全部楼层
 
好主意pBe,但DIMZIN=8:
 
  1. _$ (supp0 (rtos 1510.0 2))
  2. "151"
回复

使用道具 举报

11

主题

36

帖子

25

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 10:01:45 | 显示全部楼层
谢谢你们,这很有效。我知道这就像abc一样简单。。。
现在,我的下一个常规。。。如果我被卡住了,我会再次发布。再次感谢!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 06:29 , Processed in 0.545781 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表