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