首页 > 解决方案 > 删除非 ASCII 但不是一个特定字符

问题描述

当前:我有一个函数可以删除所有非 ascii 字符:Excel 中的 [^\x20-\x7F] 从字符串中删除,这很有效!

需要:删除非 ascii 字符但不删除 char(10)(换行符)的函数。我虽然正则表达式支持否定局部性,所以我的建议是 ([^\x20-\x7F]+/n)。

但是,在这种形式中,它不会删除任何非 ascii 字符(但会保留换行符)。

标签: regexexcelnon-ascii-characters

解决方案


这将保留 ASCII 代码在 20 16和 7F 16以及 A 16之间的字符:

Public Function Kleanup(sIn As String) As String
    Dim temp As String, L As Long, i As Long, CH As String

    temp = ""
    L = Len(sIn)
    For i = 1 To L
        CH = Mid(sIn, i, 1)
        If (Asc(CH) > 31 And Asc(CH) < 128) Or CH = Chr(10) Then
            temp = temp & CH
        End If
    Next i

    Kleanup = temp
End Function

推荐阅读