;-----------------------------------------------------------------------------------
; Функция проверки строки на принадлежность числу.
; Исключения: число, представленное в экспотенциальной форме (-1.0e6)
; не будет считаться числом!
; Строка ".123" будет считаться числом (подразумеваем, что перед точкой стоит ноль)
; (C)KAI, 2008 г. (413-2) 65-05-10 Магадан. http://geol-dh.narod.ru/
;-----------------------------------------------------------------------------------
(defun STR_CHECK_IS_NUMBER (val / numb isdig i ch) ; Параметры функции: val - строка
(setq numb (strlen val) ;число символов в строке
isdig T ;задаем флаг "это число"
i 1
);setq
(while (<= i numb)
(setq ch (substr val i 1))
(if (or (and (wcmatch ch "[+-.]") (= numb 1))
(and (wcmatch ch "[+-]") (/= i 1))
(not (wcmatch ch "[+-.0123456789]")))
(setq isdig nil ;задаем флаг "это НЕ число"
i (1+ numb) ;выход из while
);setq
)
(setq i (1+ i))
);while
isdig ;возврат: Т - число, nil - не число.
);end of ******** STR_CHECK_IS_NUMBER *******
|
|