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

置換は、必要なものをすべて削除します。ChrWはコードで Unicode 文字を生成します (Unicode プレーン 0 の外側の文字を生成するには、2 Char を連結する必要があります)。

何かのようなもの:

Replace("My text", ChrW(8194), "");
于 2012-05-23T04:44:06.867 に答える
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 に答える
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; を変換する簡単な方法 HTML から UTF-8 xml への .Net でのプログラムまたはツールの使用

于 2012-05-23T12:57:16.267 に答える