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