我需要代码来删除vb6字符串中的所有unicode字符。
答案 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.)