替换字符串 c# 中的控制字符
本文关键字:控制字符 字符串 替换 | 更新日期: 2023-09-27 18:33:30
我的数据库中的某些文本字段嵌入了错误的控制字符。我只是在尝试序列化对象并在字符
和
上收到xml错误时才注意到这一点。 可能还有其他人。
如何使用 C# 替换它们? 我认为这样的事情会起作用:
text.Replace(''x2', ' ');
但事实并非如此。任何帮助表示赞赏。
字符串是不可变的 - 您需要重新分配:
text = text.Replace(''x2', ' ');
正如上面所说的,字符串在 C# 中是不可变的。这意味着该语句:
text.Replace(''x2', ' ');
返回了您想要的字符串,但没有更改您给它的字符串。由于您没有在任何地方分配返回值,因此它丢失了。这就是为什么上面的语句应该解决问题的原因:
text = text.Replace(''x2', ' ');
如果你有一个经常进行更改的字符串,你可以查看 StringBuilder 对象,它的工作方式与常规字符串非常相似,但它们是可变的,因此在某些位置更有效。
祝你好运!
-克雷格
您正在处理的较大问题是 XmlSerialization 往返问题。 从字符串开始,将其序列化为 xml,然后将 xml 反序列化为字符串。 人们期望这始终导致一个与第一个字符串等效的字符串,但如果字符串包含控制字符,则反序列化将引发异常。
可以通过将XmlTextReader
而不是StreamReader
传递给Deserialize
方法来解决此问题。 将 XmlTextReader 的规范化属性设置为 false
。
您还应该能够通过将字符串序列化为 CDATA 来解决此问题;有关详细信息,请参阅如何使用 XmlSerializer 将字符串序列化为 CDATA?。