明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1143|回复: 3

[基础] 关于一个if判断式的问题

[复制链接]
发表于 2010-12-12 22:02:24 | 显示全部楼层 |阅读模式
下面这样程式我有一个if判断式的地方不了解

这段程式的功用就是 , "框选"  然后把选中的英文字母,字首变成大写
abcd EFG>Abcd Efg
ABCD EFG>Abcd Efg
这段程式,如果遇到了有空格,那么,空格之后的下一个字母也会变成大写
以下这段标为红色的部份,就是让我困扰的部份

当判断 pk= " "时
T=(setq key t)
F=(setq key nil)
为什么这样的判断式,最后会让,空格之后的下一个字母也变成大写??
实在想不通,请各位指点一二

    (if(= n 1)
      (setq key t);;T
      (if(= PK " ")(setq key t)(setq key nil));;F
    )
    (if(= key nil)
      (setq pp(strcat pp (strcase p t)))
      (setq pp(strcat pp (strcase p)))
    )









(defun C:236()
  (print"\n選擇文字")
  (setq ss(ssget));;宣告一個空選集
  (setq i 0)


  (repeat (sslength ss);;計算圓元的數量
    (setq ssn(ssname ss i));;ssn=x物件
    (setq data(entget ssn))
    (setq xtype(cdr(assoc 0 data)))
    (if(= xtype "TEXT");;TEXT要大寫喔^^
      (progn

(setq oldtxt(assoc 1 data))


(setq txt(cdr oldtxt));;取出文字


(chktxt);;取出的文字進入副程式中作用


(setq newtxt(cons 1 pp))


(setq data(subst newtxt oldtxt data))


(entmod data)

      )
    )
    (setq i(+ 1 i))
  )   




;;vc副程式;;
(defun chktxt()
  (setq p "" pp "" n 1 key nil)
  (repeat (strlen txt)
    (setq pk p)
    (setq p(substr txt n 1))
    (if(= n 1)
      (setq key t)
      (if(= PK " ")(setq key t)(setq key nil))
    )
    (if(= key nil)
      (setq pp(strcat pp (strcase p t)))
      (setq pp(strcat pp (strcase p)))
    )
    (setq n(+ 1 n))     
  )
)


(prin1)
)


发表于 2010-12-12 23:11:19 | 显示全部楼层
你这段程序本来就是实现让一个字串中每个空格后的第一个字母都变大写的嘛!不知道困扰你的是什么?如果只让一个字串第一个字母变大写,何必这么麻烦,取出字串第一个字母strcase一下就行了!
发表于 2010-12-12 23:32:07 | 显示全部楼层
;;试试
(defun TEST (STR / TAG)
   (setq TAG T)
   (vl-list->string
   (mapcar '(lambda (X)
              (if TAG
                (if (<= 97 X 122) (setq X (- X 32)))
                (if (<= 65 X 90) (setq X (+ X 32)))
              )
              (if (= X 32)
                (setq TAG T)
                (setq TAG nil)
              )
              X
            )
            (vl-string->list STR)
   )
   )
)

(test "abcd EFG")
(test "ABCD EFG")
 楼主| 发表于 2010-12-13 10:02:59 | 显示全部楼层
本帖最后由 lead009 于 2010-12-13 12:33 编辑

我想通了,謝謝各位的回履
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 16:27 , Processed in 0.170393 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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