2013-02-27 123 views
0

我沒有使用Visual FoxPro一段時間。今天,我的前同事問我如何從名稱字段中刪除非字符,即只允許a-z和A-Z。我記得我使用了一個名爲strstran的函數來完成它。我需要定義一個包含a-z和A-Z的變量。但我現在不記得了。有人知道如何處理這個問題。提前致謝。如何使用visual foxpro從名稱字段中刪除非字符字母

回答

5

使用CHRTRAN()函數。

FUNCTION GetAlphaCharacters 
    LPARAMETERS tcExpressionSearched 

    LOCAL lcAllowedCharacters 
    m.lcAllowedCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 

    RETURN CHRTRAN(m.tcExpressionSearched, CHRTRAN(m.tcExpressionSearched, m.lcAllowedCharacters, ""), "") 
ENDFUNC 
0

另一種選擇是使用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 
0

我知道我對晚會有點遲,但這是我寫的一個函數,用於清除字符串中所有不可打印的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 
相關問題