从字符串中删除隐藏字符

2024-01-20

我的问题:

我有一个通过电子邮件发送新闻通讯的 .NET 应用程序。在 Outlook 中查看新闻通讯时,Outlook 会显示一个问号来代替它无法识别的隐藏字符。这些隐藏字符来自最终用户,他们将组成时事通讯的 html 复制并粘贴到表单中并提交。如果这些隐藏字符出现在字符串的末尾或开头,c#trim() 会删除它们。当在 gmail 中查看时事通讯时,gmail 会很好地忽略它们。当我将这些隐藏字符粘贴到Word文档中并打开“显示段落标记和隐藏符号”选项时,这些符号将显示为一个更大矩形内的一个矩形。此外,构成新闻通讯的文本可以使用任何语言,因此必须接受 Unicode 字符。我尝试循环遍历字符串来检测字符,但循环无法识别它并跳过它。要求最终用户在提交之前先将 html 粘贴到记事本中也是不可能的。

我的问题:
如何使用 C# 检测并消除这些隐藏字符?


您可以使用以下命令从输入字符串中删除所有控制字符:

string input; // this is your input string
string output = new string(input.Where(c => !char.IsControl(c)).ToArray());

这是文档 https://msdn.microsoft.com/en-us/library/system.char.iscontrol.aspx为了IsControl() method.

或者,如果您只想保留字母和数字,您也可以使用IsLetter https://msdn.microsoft.com/en-us/library/system.char.isletter.aspx and IsDigit https://msdn.microsoft.com/en-us/library/system.char.isdigit.aspx功能:

string output = new string(input.Where(c => char.IsLetter(c) || char.IsDigit(c)).ToArray());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从字符串中删除隐藏字符 的相关文章