【发布时间】:2017-06-12 11:01:25
【问题描述】:
我需要以编程方式删除不可打印的字符,例如:
制表符 - char(9) 换行符 - char(10) 回车 - char(13) 数据链接转义 - char(16)
我启动了一个通用函数,该函数将从 ms 访问表单字段的 lost_focus 事件中调用。
我还没有弄清楚如何识别字符串何时包含不需要的字符。
Function RemoveNonPrintableCharacters(ByVal TextData) As String
Dim dirtyString As String
Dim cleanString As String
Dim iPosition As Integer
If IsNull(TextData) Then
Exit Function
End If
dirtyString = TextData
cleanString = ""
For iPosition = 1 To Len(dirtyString)
Select Case Asc(Mid(dirtyString, iPosition, 1))
Case 9 ' Char(9)
Case 10 ' Char(10)
Case 13 ' Char(13)
Case 16 ' Char(16)
Case Else ' Add character to clean field.
cleanString = cleanString & Mid(dirtyString, iPosition, 1)
End Select
Next
RemoveNonPrintableCharacters = cleanString
End Function
这是我在测试时一直在使用的 2 个字符串:
This line, has multiple, tabs that need to be removed
This line, has multiple,
line
breaks
that
need to be removed
This line, has multiple, tabs that need to be removed
And
Also contains
multiple,
line
breaks
that
need to be removed
【问题讨论】:
-
“我还没有弄清楚如何识别字符串何时包含不需要的字符。”您是否只想识别“脏”字符串以避免浪费时间在函数中执行不必要的处理?
-
我想在字符串被发送到数据库之前清理它。
-
请考虑“识别字符串何时包含不需要的字符”的任何方式都将涉及逐个迭代字符,无论是由您直接完成还是由其他一些内置函数完成。您的目标是加快流程吗?
-
我肯定想要快速处理,但我的主要目标是避免不需要的数据进入数据库。这些是有时使用复制和粘贴文本的 MS Access 表单;有时这些文本行包含制表符、换行符,它们可以进入数据库。我正在为每个允许粘贴的字段添加对事件 Lost_Focus 的函数调用。
标签: string vba replace ms-access-2007