【问题标题】:Dealing with special characters in String处理字符串中的特殊字符
【发布时间】:2017-05-12 18:39:25
【问题描述】:

我有时会下载一些带有中文字符的文件,显然String 无法识别它们。

关于如何告诉 VBA 以下内容的任何想法:

如果文件名中有一些未知字符,则删除它们,只保留文件名中包含正常字符的第一部分。

实际上这些特殊字符中的每一个都将被替换为“?”。

但问题是 Msgbox InStr(1, AttachmentName, "?") 将返回 0,即使 MsgBox AttachmentName 会显示一些“?”。

我做了以下,但正如我上面所说,“?”显示在MsgBox,但并不真正存在,因此它永远不满足条件...

If InStr(1, AttachmentName, "?") <> 0 Then
     AttachmentName = Mid(AttachmentName, 1, InStr(1, AttachmentName, "?") - 1) & "unknown characters "
End If

【问题讨论】:

    标签: string vba excel character special-characters


    【解决方案1】:

    这个sub从一个字符串中删除所有的中文字符。

    Private Sub RemoveChinese()
    
        Dim Fun As String
        Dim Txt As String
        Dim Ch As String
        Dim n As Integer
    
        Txt = Selection.Text
    
        For n = 1 To Len(Txt)
            Ch = Mid(Txt, n, 1)
            If Asc(Ch) = AscW(Ch) Then Fun = Fun & Ch
        Next n
    
        MsgBox Fun
    End Sub
    

    关键是汉字用2个字节表示,而写一个拉丁字符只需要1个字节。您必须在您的计算机上安装中文支持才能真正描绘它们。因此,? 插入了无法识别的字符。

    【讨论】:

    • 我建议让你的变量名更具描述性,尤其是在将来有人遇到这个问题的情况下。即使知道你在做什么,也很难遵循你的例子的逻辑,因为读者不知道 Fun 和 Ch 和 Txt(就他们的目的而言)。
    猜你喜欢
    • 2013-12-19
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 2011-04-16
    • 2014-09-13
    • 2011-11-16
    相关资源
    最近更新 更多