как удалить несимвольную букву из поля имени с помощью Visual FoxPro

Я некоторое время не использовал Visual FoxPro. Сегодня мой бывший коллега спрашивает меня, как убрать несимвол из поля имени, т.е. разрешены только az и AZ. Я помню, что использовал для этого функцию под названием strstran. Мне нужно было определить переменную, содержащую az и AZ. Но я не помню сейчас. Кто-нибудь знает, как справиться с этой проблемой. Заранее спасибо.


person user1188125    schedule 27.02.2013    source источник


Ответы (3)


Используйте функцию CHRTRAN().

FUNCTION GetAlphaCharacters
    LPARAMETERS tcExpressionSearched

    LOCAL lcAllowedCharacters
    m.lcAllowedCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

    RETURN CHRTRAN(m.tcExpressionSearched, CHRTRAN(m.tcExpressionSearched, m.lcAllowedCharacters, ""), "")
ENDFUNC
person Frank Perez    schedule 27.02.2013

Другой вариант — использовать 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
person Jerry    schedule 27.02.2013

Я знаю, что немного опоздал на вечеринку, но вот функция, которую я написал для удаления всех непечатаемых символов 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
person Edison Sullivan    schedule 05.09.2017