BlackBox 发表于 2022-7-6 09:35:00

 
1+
 
(vl-string-right-trim "0" (rtos x))

shakuhachi 发表于 2022-7-6 09:37:50

(setq x 15.0)
(vl字符串右微调“0”(rtos x))
我得到的“1'-3”值需要是15
 

BlackBox 发表于 2022-7-6 09:41:47

 
然后可能需要有条件地将值-->>解析为所需的格式。
 
也许这将有助于:
 

(defun FEET (s)
;; © RenderMan, 2011
(substr s 1 (vl-string-search "'" s)))

 
从字符串中提取英寸:

(defun INCH(s / i)
;; © RenderMan, 2011
(substr s (setq i (+ 2 (vl-string-search "-" s))) (- (strlen s) i)))

 
示例:
 

_$ (feet "10'-11\"")
"10"
_$ (feet "10000'-11\"")
"10000"
_$ (inch "10'-11\"")
"11"
_$ (inch "10'-1111\"")
"1111"
_$

 
HTH公司

Lee Mac 发表于 2022-7-6 09:44:30

 
(vl-string-right-trim ".0" (rtos x 2))

shakuhachi 发表于 2022-7-6 09:47:56

也不起作用。
尝试:
 
命令:(setq x 1510.0)
1510
命令:(vl string right trim.0“(rtos x 2))
"151"
 
 

BlackBox 发表于 2022-7-6 09:50:10

它的格式是“1510.0”还是“1'-3”???

pBe 发表于 2022-7-6 09:53:58

(defun supp0 (str / a )
   (setq a (reverse (vl-string->list str)))
      (while (= (car a) 48)
                   (setq a (cdr a))
                   )
       (setq a (if (= (car a) 46)(cdr a) a))
(vl-list->string (reverse a))
   )

 
(补充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"

Lee Mac 发表于 2022-7-6 09:57:52

 
哦,接得好,我忽略了vl弦修剪的行为。
 
快速修复方法是:
 
(vl-string-right-trim "." (vl-string-right-trim "0" (rtos x 2)))
 
但这仍然假设DIMZIN设置为除8之外的其他值(其中尾部的零无论如何都会被删除)。
 
所以这可能更好:
 
(defun _TrimTrailingZeros ( s )
   (if (vl-string-position 46 s nil t)
       (vl-string-trim "." (vl-string-right-trim "0" s))
       s
   )
)
 
DIMZIN=0
_$ (_TrimTrailingZeros (rtos 1510.0 2))
"1510"
 
DIMZIN=8
_$ (_TrimTrailingZeros (rtos 1510.0 2))
"1510"

Lee Mac 发表于 2022-7-6 09:59:09

 
好主意pBe,但DIMZIN=8:
 
_$ (supp0 (rtos 1510.0 2))
"151"

shakuhachi 发表于 2022-7-6 10:01:45

谢谢你们,这很有效。我知道这就像abc一样简单。。。
现在,我的下一个常规。。。如果我被卡住了,我会再次发布。再次感谢!
页: 1 [2]
查看完整版本: 简单abc lisp