我有一个访问表,我正在编写一个vba代码来从表中删除non-ascii字符,我尝试使用以下两个函数
Public Function removeall(stringData As String) As String\n Dim letter As Integer\n Dim final As String\n Dim i As Integer\n\n For i = 1 To Len(stringData) \'loop thru each char in stringData\n\n letter = Asc(Mid(stringData, i, 1)) \'find the char and assign asc value\n\n Select Case letter \'Determine what type of char it is\n Case Is < 91 And letter > 64 \'is an upper case char\n final = final & Chr(letter)\n Case Is < 123 And letter > 96 \'is an lower case char\n final = final & Chr(letter)\n Case Is = 32 \'is a space\n final = final & Chr(letter)\n End Select\n\n Next i\n removeall = final\n\n End Function\nRun Code Online (Sandbox Code Playgroud)\n\n还尝试使用以下功能
\n\nPublic Function Clean(InString As String) As String\n\'-- Returns only printable characters from InString\n Dim x As Integer\n For x = 1 To Len(InString)\n If Asc(Mid(InString, x, 1)) > 31 And Asc(Mid(InString, x, 1)) < 127 Then\n Clean = Clean & Mid(InString, x, 1)\n End If\n Next x\n\nEnd Function\nRun Code Online (Sandbox Code Playgroud)\n\n但问题是:它removeall function删除了所有内容,包括#和space字符。并且 InClean function也删除了special characters。
我需要一个正确的函数来保留键盘字符并删除所有其他字符
\n\n表中字符串的示例有:
\n\n1) “附件饲管适合 5-18 \xc2\xbaFR#”
\n\n2) “导管 FOLEY 3WAY SILI ELAST 20FR 30ML 乳胶\xc2\xba”
\n\n任何帮助将不胜感激
\n\n输出应该是这样的
\n\n1) “附件饲管适合 5-18 FR”
\n\n2) “导管 FOLEY 3WAY SILI ELAST 20FR 30ML 乳胶”
\n一种方法是使用可接受字符的白名单。例如
\n\n\' You can set up your domain specific list:\nConst Whitelist = "1234567890" & _\n "qwertyuiopasdfghjklzxcvbnm" & _\n "QWERTYUIOPASDFGHJKLZXCVBNM" & _\n " `~!@#$%^&*()_-=+[]{};:""\'|\\<>?/ \xe2\x80\x93"\n\nPublic Sub test()\n\n Debug.Print Clean("ATTACHMENT FEEDING TUBE FITS 5-18 \xc2\xbaFR#")\n Debug.Print Clean("CATHETER FOLEY 3WAY SILI ELAST 20FR 30ML LATEX\xc2\xba")\n\nEnd Sub\n\nPublic Function isAllowed(char As String) As Boolean\n\n isAllowed = InStr(1, Whitelist, char, vbBinaryCompare) > 0\n\nEnd Function\n\n\nPublic Function Clean(dirty As String) As String\n\'-- Returns only printable characters from dirty\n Dim x As Integer\n Dim c As String\n For x = 1 To Len(dirty)\n c = Mid(dirty, x, 1)\n If isAllowed(c) Then\n Clean = Clean & c\n End If\n Next x\n\nEnd Function\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4899 次 |
| 最近记录: |