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

本文关键字:控制字符 字符串 替换 | 更新日期: 2023-09-27 18:33:30

我的数据库中的某些文本字段嵌入了错误的控制字符。我只是在尝试序列化对象并在字符上收到xml错误时才注意到这一点。 可能还有其他人。

如何使用 C# 替换它们? 我认为这样的事情会起作用:

text.Replace(''x2', ' ');

但事实并非如此。任何帮助表示赞赏。

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

字符串是不可变的 - 您需要重新分配:

text = text.Replace(''x2', ' ');

正如上面所说的,字符串在 C# 中是不可变的。这意味着该语句:

text.Replace(''x2', ' '); 

返回了您想要的字符串,但没有更改您给它的字符串。由于您没有在任何地方分配返回值,因此它丢失了。这就是为什么上面的语句应该解决问题的原因:

text = text.Replace(''x2', ' '); 

如果你有一个经常进行更改的字符串,你可以查看 StringBuilder 对象,它的工作方式与常规字符串非常相似,但它们是可变的,因此在某些位置更有效。

祝你好运!

-克雷格

您正在处理的较大问题是 XmlSerialization 往返问题。 从字符串开始,将其序列化为 xml,然后将 xml 反序列化为字符串。 人们期望这始终导致一个与第一个字符串等效的字符串,但如果字符串包含控制字符,则反序列化将引发异常。

可以通过将XmlTextReader而不是StreamReader传递给Deserialize方法来解决此问题。 将 XmlTextReader 的规范化属性设置为 false

您还应该能够通过将字符串序列化为 CDATA 来解决此问题;有关详细信息,请参阅如何使用 XmlSerializer 将字符串序列化为 CDATA?。