【问题标题】:How to create special character string in vb.net如何在 vb.net 中创建特殊字符串
【发布时间】:2012-05-29 14:42:49
【问题描述】:

在古代,我们可以用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

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

我该怎么做?

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

【问题讨论】:

    标签: html xml vb.net utf-8 character-encoding


    【解决方案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)
    

    【讨论】:

    • 我真的不认为这会奏效。你所做的只是看一下 asc。我们谈论的特殊字符远不止这些。
    • 其实改成 AscW() 可以去掉或者替换你想要的字符。除非你在谈论添加它们?在这种情况下使用 Char.ConvertFromUtf32() 或 ChrW()
    【解决方案2】:

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

    类似:

    Replace("My text", ChrW(8194), "");
    

    【讨论】:

    【解决方案3】:

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

    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;"), "")
    

    另外,你可能想看看我找到的这个页面:

    Easy way to convert &#XXXX; from HTML to UTF-8 xml either programmaticaly in .Net or using tools

    【讨论】:

      猜你喜欢
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 2020-09-29
      • 2023-03-24
      • 2017-04-17
      • 2013-10-11
      相关资源
      最近更新 更多