请教一个LISP编程的问题。
如何判断一个字符串是否为数字?我的意思是选取一个实体后,判断它是否是数字,比如‘123’是,‘B4’不是。...
如何判断一个字符串是否为数字?我的意思是选取一个实体后,判断它是否是数字,比如 ‘123’是,‘B4’不是。
展开
1个回答
展开全部
给你个代码.
;;; 确定字符串是否为数字
;;; ==================================================================
;;; (strIsNum str)
;;; 确定字符串是否为数字
;;; ------------------------------------------------------------------
;;; 参数:
;;; Str str 检查的字符串
;;; ------------------------------------------------------------------
;;; Returns:
;;; [LOG] T :字符串为数字, F 字符串不是数字
;;; Example: (setq a '123')
;;; (setq b '1B5')
;;; (strIsNum a) 返回 T
;;; (strIsNum b) 返回 F
;;; ------------------------------------------------------------------
(defun $xdlsp_string_isNum (str / ascList n len return char)
(setq ascList ($xdlsp_string->ascii str))
(setq n 0)
(setq return T)
(setq len (length ascList)
i 0
)
(while (and
return
(< n len)
)
(setq char (nth n ascList)
i (1+ i)
)
(cond
((or
(= char 43)
(= char 45)
)
(if (/= i 1)
(setq return nil)
(setq return t)
)
)
((and
(>= char 48)
(<= char 57)
)
(setq return t)
)
((= char 46)
(setq return t)
)
(t
(setq return nil)
)
)
(setq n (1+ n))
) ; _ end of while
return
)
;;; _ end of defun
;;; 确定字符串是否为数字
;;; ==================================================================
;;; (strIsNum str)
;;; 确定字符串是否为数字
;;; ------------------------------------------------------------------
;;; 参数:
;;; Str str 检查的字符串
;;; ------------------------------------------------------------------
;;; Returns:
;;; [LOG] T :字符串为数字, F 字符串不是数字
;;; Example: (setq a '123')
;;; (setq b '1B5')
;;; (strIsNum a) 返回 T
;;; (strIsNum b) 返回 F
;;; ------------------------------------------------------------------
(defun $xdlsp_string_isNum (str / ascList n len return char)
(setq ascList ($xdlsp_string->ascii str))
(setq n 0)
(setq return T)
(setq len (length ascList)
i 0
)
(while (and
return
(< n len)
)
(setq char (nth n ascList)
i (1+ i)
)
(cond
((or
(= char 43)
(= char 45)
)
(if (/= i 1)
(setq return nil)
(setq return t)
)
)
((and
(>= char 48)
(<= char 57)
)
(setq return t)
)
((= char 46)
(setq return t)
)
(t
(setq return nil)
)
)
(setq n (1+ n))
) ; _ end of while
return
)
;;; _ end of defun
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询