godofcad 发表于 2022-7-6 07:56:35

拆分文字

你好
 
我想从列表中拆分单词(包括coma),并为每个拆分的单词创建变量
 
Example: "1,221866.070,1937463.651,611.892,A1"
want to split like this
"1"
"221866.070"
"1937463.651"
"611.892"
"A1"
 
等待您的回复。。。。
:(:(:(
 
甘尼什·谢蒂

pBe 发表于 2022-7-6 08:00:44

戈多夫卡。拆分“文字”很简单。像这种情况下,“单词”的数量总是5吗?如果没有。这就是问题的开始,变量名是什么?每次都不同?
 
样品

(defun _delFinder(str md / d l str)
   (while (setq d (vl-string-position md str nil T))
         (setq l (cons (substr str (+ 2 d)) l)
               str (substr str 1 d)))
   (cons str l)
   )
 
(setq str "1,221866.070,1937463.651,611.892,A1")
(setq tovar (_delfinder str 44) cnt 0)
(foreach words tovar
   (set (read (strcat "Var" (itoa (setq cnt (1+ cnt))))) words))
 
var1->“1”
var2->“221866.070”
var3->“1937463.651”
var4->“611.892”
var5->“A1”
 
但是,您可以不使用变量名,直接从列表中完成任务。

pBe 发表于 2022-7-6 08:04:28

我们可以通过分配收集/拆分的“文字”的真实值来进一步实现这一点
 
(foreach words tovar
   (set (read (strcat "Var" (itoa (setq cnt (1+ cnt)))))
          (if (numberp (setq num (read words))) num words)))
 
 
var1->1
(var1型)INT
var2->221866.070
(var2型)REAL
var3->1937463.651
(var3型)REAL
var4->611.892
(var4型)REAL
var5->“A1”
(var5型)STR
 
HTH公司

Tharwat 发表于 2022-7-6 08:10:03

你好
 
晚会有点晚了,但总比什么都没有好
 
用法示例。。。
 
(_StepThrough "1,221866.070,1937463.651,611.892,A1")

Tharwat 发表于 2022-7-6 08:13:51

稍微好一点。。。。
 

(defun _StepThrough (lst / chars integer position values variables)
;;;               Tharwat 19. May. 2012               ;;;
;;; divide a list of strings that contain commas within ;;;
(if (eq (type lst) 'STR)
   (setq chars (vl-string->list lst)))
(if (eq (car chars) 44)
   (setq lst (substr lst 2 (strlen lst))))
(if (eq (last chars) 44)
   (setq lst (substr lst 1 (1- (strlen lst)))))
(setq lst (strcat lst ",") integer 0)
(while (setq position (vl-string-search "," lst 0))
   (if (setq values (cons (set (read (strcat "a" (itoa (setq integer (1+ integer)))))
                  (substr lst 1 position)
                )
                values
            )
       )
   (setq variables (cons (strcat "a" (itoa integer)) variables))
   )
   (setq lst (substr lst (+ position 2) (strlen lst)))
)
(print (reverse variables))
(print (reverse values))
(princ)
)

ReMark 发表于 2022-7-6 08:17:57

我刚刚注意到OP的屏幕名称:CAD之神。有人会认为CAD之神会知道所有的答案。

pBe 发表于 2022-7-6 08:18:35

 
好吧,这也可能是一个对卡德·古夫(cadd goof)的字谜,不要冒犯,戈多夫·卡德(godofcad),我们只是在“偷懒”
 
随便。“文字”似乎是测量点的标签\坐标\描述。然后,就像我之前建议的那样,直接从列表中写出(我猜是属性)值,这将消除将每个值赋给变量的需要
 
(foreach words (_delfinder str 44)
........;<-- your code here
)

 
我真的很抱歉我提到我的cp名为godofcad
我的avtar是lisp。。。对不起其他人
 
我今天要结帐
 
:(

godofcad 发表于 2022-7-6 08:22:02

通过将命令调用替换为层、文本和点的函数entmake(x),可以改进代码。

pBe 发表于 2022-7-6 08:28:24

 
你为什么要这么做?我以前说过。别生气,会员们只是在装傻,仅此而已
 
只工作不玩耍,戈多夫卡会变傻。。。。

Blackfish 发表于 2022-7-6 08:30:11

 
油箱u pBe。。。隐马尔可夫模型。。。。。Tats ok。。。。
 
我不会感到难过,也不会关闭我的帐户
 
坦克为您提供支持
 
 
:):):):)
页: [1] 2
查看完整版本: 拆分文字