需要用于删除vb6中所有unicode字符的代码

时间:2015-06-08 14:52:53

标签: unicode vb6 unicode-string

我需要代码来删除vb6字符串中的所有unicode字符。

3 个答案:

答案 0 :(得分:1)

如果这是UTF-16文本(正常的VB6字符串值都是),你可以忽略代理对的问题,那么这很简单,相当简洁:

Private Sub DeleteNonAscii(ByRef Text As String)
    Dim I As Long
    Dim J As Long
    Dim Char As String

    I = 1
    For J = 1 To Len(Text)
        Char = Mid$(Text, J, 1)
        If (AscW(Char) And &HFFFF&) <= &H7F& Then
            Mid$(Text, I, 1) = Char
            I = I + 1
        End If
    Next
    Text = Left$(Text, I - 1)
End Sub

这解决了VB6在从AscW()函数返回带符号的16位整数时必须做出的不幸选择。 <{1}}对于symmatry应该是一个长期的,但它就是它。

它应该在清晰度,可维护性和性能方面击败任何正则表达式库。如果真正大量的文本需要更好的性能,那么可以使用SAFEARRAY或CopyMemory特技。

答案 1 :(得分:0)

Public Shared Function StripUnicodeCharactersFromString(ByVal inputValue As String) As String
    Return Regex.Replace(inputValue, "[^\u0000-\u007F]", String.Empty)
End Function

Vb6 - 不确定

sRTF = "\u" & CStr(AscW(char))

工作? - 您可以对127以上的所有字符值执行此操作

答案 2 :(得分:0)

StrConv是转换字符串的命令。

StrConv功能

返回按指定转换的Variant(String)。

<强>语法

StrConv(string, conversion, LCID)

StrConv函数语法具有以下命名参数:

部分说明

string Required. String expression to be converted. 

conversion Required. Integer. The sum of values specifying the type of conversion to perform. `128` is Unicode to local code page (or whatever the optional LCID is) 

LCID Optional. The LocaleID, if different than the system LocaleID. (The system LocaleID is the default.)