如何使用c#过滤不在[^ \ u0000- \ uFFFF]中的过滤字符中的字符

时间:2013-06-19 19:31:46

标签: .net

当我的应用程序尝试使用它们处理电子邮件时,这些代码点会导致问题。

1 个答案:

答案 0 :(得分:1)

C#字符串是UTF-16编码的,因此字符串的每个 char元素都是一个必须属于[\u0000-\uFFFF]范围的代码单元。如果您只想从需要2个UTF-16编码代码单元的字符串中删除每个Unicode代码点,那么您需要删除字符[\uD800-\uDBFF]的每个实例,紧接着后面跟着一个字符范围[\uDC00-\uDFFF]。或者,我相信你可以简单地删除范围[\uD800-\uDFFF]中的每个字符并完成相同的任务。

结果可能没有用,因为我认为代理对最初是出于特定原因引入的,如果过滤掉它们会导致字符串的含义发生变化。最好的解决方案是更新您的应用程序以正确处理它们。