1

我有一段时间没有使用 Visual FoxPro。今天,我的前同事问我如何从名称字段中删除非字符,即只允许 az 和 AZ。我记得我使用了一个名为 strstran 的函数来执行此操作。我需要定义一个包含 az 和 AZ 的变量。但我现在不记得了。有人知道如何处理这个问题。提前致谢。

4

3 回答 3

5

使用 CHRTRAN() 函数。

FUNCTION GetAlphaCharacters
    LPARAMETERS tcExpressionSearched

    LOCAL lcAllowedCharacters
    m.lcAllowedCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

    RETURN CHRTRAN(m.tcExpressionSearched, CHRTRAN(m.tcExpressionSearched, m.lcAllowedCharacters, ""), "")
ENDFUNC
于 2013-02-27T11:25:33.870 回答
1

另一种选择是使用 ISALPHA()。这仅查看字符串中最左侧的位置,但不区分大小写。

***This should work, but I haven't tested it.
myresults = ""
myvar = "MyText12"
FOR(i = 1 TO LEN(myvar))
   IF ISALPHA( SUBSTR(myvar, i, 1) )
     myresults = myresults +  SUBSTR(myvar, i, 1)
   ENDIF
ENDFOR
RETURN myresults
于 2013-02-27T13:51:06.843 回答
1

我知道我参加聚会有点晚了,但这是我编写的一个函数,用于从字符串中清除所有不可打印的 ASCII 字符。

    CLEAR

    * Contains ASCII characters 1 (SOH) and 2 (STX)
    cTest = "Garbage Data   "    

    ? cTest
    cTest = RemoveNonPrintableCharacters(cTest)
    ? cTest


    FUNCTION RemoveNonPrintableCharacters
        LPARAMETERS tcExpressionSearched

        cCleanExpression = tcExpressionSearched

        * Cleans out the first 32 ASCII characters, which are not printable
        FOR decCount = 0 TO 31
            cCleanExpression = CHRTRAN(m.cCleanExpression, CHR(decCount), "")    
        ENDFOR  

        * Also cleans out the non-printable DEL character (ASCII 127)
        cCleanExpression = CHRTRAN(m.cCleanExpression, CHR(127), "")

        * Return the clean string
        RETURN cCleanExpression
    ENDFUNC
于 2017-09-05T20:44:51.563 回答