簡體   English   中英

替換字符串c#中的控制字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM