2012-05-23 23 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