1

在古代,我们可以用chr(56)

例如,假设字符不可打印。我们想把它放在一个字符串中。做就是了

Dim a as string = chr (56)

现在我们有了 UTF8 或 unicode(或任何编码)。

假设我希望变量 a 包含

             en space
             em space
           thin space
‌ ‌    ‌      zero width non-joiner
‍ ‍    ‍       zero width joiner
‎ ‎    ‎       left-to-right mark
 ‏    ‏       right-to-left mark

事实上,假设我想创建一个函数来从我的字符串中删除所有这些字符。

我该怎么做?

我希望该功能保持中文、韩文、日文字符完整,然后摆脱非常模糊的字符。

4

3 回答 3

1
''' <summary>
''' This function replaces 'smart quotes' (ASC 145, 146, 147, 148, 150) with their correct ASCII versions (ASC 39, 34, 45), and replaces any other non-ASCII characters with "?"
''' </summary>
''' <param name="expression"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function Unicode2ASCII(ByVal expression As String) As String
  Dim sb As New System.Text.StringBuilder
  For i As Integer = 1 To Len(expression)
    Dim s As String = Mid(expression, i, 1)
    Select Case Asc(s)
      Case 145, 146 'apostrophes'
        sb.Append("'"c)
      Case 147, 148 'inverted commas'
        sb.Append(""""c)
      Case 150 'hyphen'
        sb.Append("-"c)
      Case Is > 127
        sb.Append("?"c)
      Case Else
        sb.Append(s)
    End Select
  Next i
  Return sb.ToString
End Function

或者添加它们...

Dim s As String = "a" & ChrW(8194) & "b"
MsgBox(s)
于 2012-05-23T04:31:24.067 回答
1

替换删除任何你想要的。ChrW按代码生成 Unicode 字符(要在 Unicode 平面 0 之外生成字符,您需要连接 2 个字符)。

就像是:

Replace("My text", ChrW(8194), "");
于 2012-05-23T04:44:06.867 回答
0

似乎应该有更好的方法,但我能想出的最好的方法在所有情况下都可以使用,如下所示:

Private Function getString(ByVal xmlCharacterCode As String) As String
    Dim doc As XmlDocument = New XmlDocument()
    doc.LoadXml("<?xml version=""1.0"" encoding=""utf-8""?><test>" + xmlCharacterCode + "</test>")
    Return doc.InnerText
End Function

然后像这样使用它:

myString = myString.Replace(getString("&#8194;"), "")

另外,您可能想看看我发现的这个页面:

转换 &#XXXX; 的简单方法 在 .Net 中以编程方式或使用工具从 HTML 到 UTF-8 xml

于 2012-05-23T12:57:16.267 回答