明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: citykunan

有什么办法去判断一个字符串内的东西是字母还是数字?

  [复制链接]
发表于 2004-6-15 17:12:00 | 显示全部楼层
(type "0.a")当然返回STR了,


我说的是(type (read "0.a"))
发表于 2004-6-15 17:29:00 | 显示全部楼层
我有点懵了!!!(type (read "0.a"))返回SYM,0是怎么返回的?
发表于 2004-6-15 18:51:00 | 显示全部楼层
(setq lst '("0" "0." "0.a" "0 a" "1e3" "1e3a" "1a3" "a"))
(mapcar 'read lst)
-> (0 0.0 0 0 1000.0 1E3A 1A3 A)
(mapcar 'distof lst)
-> (0.0 0.0 nil nil 1000.0 nil nil nil) 正解: distof
发表于 2004-6-15 20:12:00 | 显示全部楼层
我还是没有搞明白飞哥“0既可以作为整数也可以作为符号?”这句话的含义,楼上的例子中"0.a"和"0 a"是返回了0,可如果把其中的0换为其它数,它就会返回相应的数,这大概是点和空格的缘故吧,如果去掉点和空格,那么它的类型还是SYM。
发表于 2004-6-15 22:51:00 | 显示全部楼层
wzh发表于2004-6-15 17:29:00我有点懵了!!!(type (read \"0.a\"))返回SYM,0是怎么返回的?

(read "0.a")返回0 好象我就那么几句话,每步都写了具体代码,你怎么就是一点都看不明白???
发表于 2004-6-15 23:01:00 | 显示全部楼层
Command: (setq a (read "0.a"))
0 Command: (princ a)
00 Command: (print a) 0 0 Command: (prin1 a)
00 Command: (princ 0)
00 Command: (equal a 0)
nil
实在不明白这里a的值和0到底有什么区别,只要是让它显示,是一模一样的,一比较,就不同。。。
发表于 2004-6-15 23:07:00 | 显示全部楼层
我知道(read "0.a")返回0,可是(read "1.a")返回的是1,那么是不是也可以说“1既可以作为整数也可以作为符号?”呢?
发表于 2004-6-16 01:02:00 | 显示全部楼层
(read string)

功能及参数

此函数将返回 string 的第一个表或原子。但 string 不可以包含空格, 除非是在表或字符串中 。read 会返回它的参数转换的相对应数据类型。

Command: (read "(a b c) (d)")

(A B C)

Command: (read "97 3.2")

97

Command: (read "hello there")

HELLO

命令: (read "0.a")
0
命令: (read "0a")
0A

命令: (read "0. a")
0.0

命令: (read "999.a")
999

:)

发表于 2004-6-16 02:11:00 | 显示全部楼层
我也翻了翻资料,似乎有些明白了。


READ函数的返回值是一个原子或表,它并不对它们求值,所以(equal a 0)→nil,如果一定要求值,则需要(setq a (eval (read "0.a"))),于是返回nil,而不是0。


谢谢无兄点拨!!!
发表于 2004-6-16 09:30:00 | 显示全部楼层
我总觉得这样的方式不合适,就像我的例子中的a和0,显示是一样,内容却不一样,很容易搞错,还有,不用READ,如何直接给变量赋上这种类型的值呢? Command: (setq a (read "0.a"))
0 Command: (vl-symbol-name a)
"0" Command: (read (vl-symbol-name a))
0 Command: (type (read (vl-symbol-name a)))
INT Command: (type (read (vl-symbol-name "0")))
; error: bad argument type: symbolp "0" Command: (type (read (vl-symbol-name 0)))
; error: bad argument type: symbolp 0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 12:33 , Processed in 0.198409 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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