[英]Replace control character in string c#
我的數據庫中的某些文本字段嵌入了錯誤的控制字符。 在嘗試序列化對象並在char 
上獲取xml錯誤時,我才注意到這一點
和
。 可能還有其他人。
如何使用C#替換它們? 我認為這樣的事情會起作用:
text.Replace('\x2', ' ');
但事實並非如此。 任何幫助贊賞。
字符串是不可變的 - 您需要重新分配:
text = text.Replace('\x2', ' ');
正如上面所說,字符串在C#中是不可變的。 這意味着聲明:
text.Replace('\x2', ' ');
返回了你想要的字符串,但沒有改變你給它的字符串。 由於您沒有在任何地方分配返回值,因此丟失了。 這就是上面的陳述應該解決問題的原因:
text = text.Replace('\x2', ' ');
如果你有一個經常對其進行更改的字符串,你可能會看一下StringBuilder對象,它與常規字符串非常相似,但它們是可變的,因此在某些情況下效率更高。
祝好運!
-Craig
您正在處理的更大問題是XmlSerialization往返問題。 您以字符串開頭,將其序列化為xml,然后將xml反序列化為字符串。 我希望這總是會產生一個等同於第一個字符串的字符串,但如果字符串包含控制字符,則反序列化會引發異常。
您可以通過將XmlTextReader
而不是StreamReader
傳遞給Deserialize
方法來解決此問題。 將XmlTextReader的Normalization屬性設置為false
。
您還應該能夠通過將字符串序列化為CDATA來解決此問題; 請參閱如何使用XmlSerializer將字符串序列化為CDATA? 欲獲得更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.