2012-05-23 61 views
1

在古代創造特殊字符串,我們可以chr(56)如何在vb.net

例如指定的所有字符,說的字符不能打印。我們想把它放在一個字符串中。只是做

Dim a as string = chr (56) 

現在我們有UTF8或unicode(或任何編碼)。

說我想要一個變量包含

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

其實,說我要創建一個會擺脫所有這些字符的從我的字符串的函數。

我該怎麼做?

我希望功能可以完整地保留中文,韓文,日文字符,然後清除真的非常模糊的字符。

回答

1

Replace刪除任何你想要的。 ChrW通過代碼生成Unicode字符(生成Unicode平面0之外的字符,您需要連接2個字符)。

喜歡的東西:

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

確定嗎?我認爲unicode包含了超過65k的字符,而chrw只處理了65k左右的字符 –

+0

字符串是UTF-16,如果您需要在Plane 0之外的其他Unicode字符,則只需要將2個字符串轉換爲整個Unicode字符 - 請檢查以下http:///stackoverflow.com/questions/697055/c-sharp-and-utf-16-characters和飛機的描述在http://en.wikipedia.org/wiki/Plane_%28Unicode%29 –

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) 
+0

我真的不認爲這會奏效。你所做的只是看看ASC。我們正在談論比這些更特殊的角色。 –

+0

實際上,如果您更改爲AscW(),您可以去掉或替換所需的字符。除非你正在談論添加他們?在這種情況下使用Char.ConvertFromUtf32()或ChrW() – SSS

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

此外,你可能想看看這個頁面我FO und:

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