【发布时间】:2013-02-27 04:17:29
【问题描述】:
我有一段时间没有使用 Visual FoxPro。今天,我的前同事问我如何从名称字段中删除非字符,即只允许 a-z 和 A-Z。我记得我使用了一个名为 strstran 的函数来执行此操作。我需要定义一个包含 a-z 和 A-Z 的变量。但我现在不记得了。有人知道如何处理这个问题。提前致谢。
【问题讨论】:
标签: visual-foxpro
我有一段时间没有使用 Visual FoxPro。今天,我的前同事问我如何从名称字段中删除非字符,即只允许 a-z 和 A-Z。我记得我使用了一个名为 strstran 的函数来执行此操作。我需要定义一个包含 a-z 和 A-Z 的变量。但我现在不记得了。有人知道如何处理这个问题。提前致谢。
【问题讨论】:
标签: visual-foxpro
使用 CHRTRAN() 函数。
FUNCTION GetAlphaCharacters
LPARAMETERS tcExpressionSearched
LOCAL lcAllowedCharacters
m.lcAllowedCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
RETURN CHRTRAN(m.tcExpressionSearched, CHRTRAN(m.tcExpressionSearched, m.lcAllowedCharacters, ""), "")
ENDFUNC
【讨论】:
另一种选择是使用 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
【讨论】:
我知道我参加聚会有点晚了,但这是我编写的一个函数,用于从字符串中清除所有不可打印的 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
【讨论】: