确定变量是字符串还是数字字符串的 FoxPro 函数

Sit*_*thu 2 string foxpro function digits visual-foxpro

我正在寻找一个类似于 PHP 函数is_numeric()的 Visual FoxPro 函数。
我找到了这个,但我不能使用,VARTYPE或者TYPE因为变量总是一个只包含数字的字符串。

我找到了ISDIGIT()函数,但手册说它只检查第一个字符。

确定指定字符表达式的最左边的字符是否为数字(0 到 9)。

  ISDIGIT(cExpression)
Run Code Online (Sandbox Code Playgroud)

参数
cExpression

指定 ISDIGIT( ) 测试的字符表达式。cExpression 中第一个字符之后的任何字符都将被忽略。

我会使用正则表达式对象创建我自己的函数 VBScript.RegExp

FUNCTION isNumeric( tcValue )
    LOCAL oRE
    oRE = CreateObject("VBScript.RegExp")
    oRE.Pattern = '^[0-9]+$'
    RETURN oRE.test( tcValue )      
ENDFUNC

? isNumeric( '123' )
Run Code Online (Sandbox Code Playgroud)

但是,FoxPro 是否为此提供了任何功能?
我只是在俯视吗?

也相同ISALHPA()which 确定字符表达式中最左边的字符是否是字母。我想检查变量是否只包含字母。

Fra*_*rez 5

您可以像这样创建自己的函数。

FUNCTION IsAllDigits
    LPARAMETERS tcSearched, tcOptionalSearch

    * tcSearched = the string of characters to test.
    * tcOptionalSearch = optional, additional characters to allow.

    LOCAL lcSearch
    m.lcSearch = "01234567989" + IIF(VARTYPE(m.tcOptionalSearch) = "C", m.tcOptionalSearch, "")

    LOCAL lcRemaining
    m.lcRemaining = CHRTRAN(m.tcSearched, m.lcSearch, "")

    RETURN ( LEN(m.lcRemaining) = 0 )
ENDFUNC
Run Code Online (Sandbox Code Playgroud)