检测字符串 C# 中的不可显示字符

Detect non-displayable characters in string C#

希望有人能帮我解决这个问题,因为到目前为止我还没有在网上找到任何解决方案。

我正在处理带有特殊字符的字符串,我想检测字符串中的任何字符是否无法通过网络浏览器或什至 Visual Studio 本身正确显示。以下字符串显示此类字符。这来自VS2019中的Text vizualizer:

TargetsforReduceCO

我查过类似的问题,但答案大多仅限于检查字符代码是否超过255。但是,还有很多字符仍然可以显示,例如希腊和西里尔符号。

我还发现 this 网站概述了所有 Unicode 字符并显示了它们在浏览器中的显示方式,但似乎没有任何字符无法显示的逻辑以及他们的字符代码。

我可以想象 VS 不知道哪些字符不能在各种浏览器中显示,但我希望至少有一种方法可以检查 VS 是否可以显示它们。

在此先感谢您的帮助!

编辑:

目前我正在使用

input.Any(c => !char.IsLetterOrDigit(c) && c > 255);

因为输入通常不应包含您通常可以在文本中找到的其他符号,但我确信它会在 VS 或网络浏览器实际可以显示的符号上触发。

Type char 有许多静态成员方法,如 IsPunctuation() 应该可以帮助您逐字符“分类”。请参阅本页 System.Char reference 上的示例。这些方法的每一个文档都解释了它适用于哪些字符。正如评论者所提到的,您的“可显示”标准与其说是字符值问题,不如说是字体显示问题,但是您可以使用这些方法缩小系统可以使用的范围。留意其他方法,例如 GetUnicodeCategory().

可能像 !char.IsControl(c) 这样简单的事情就可以解决问题。

在此处查看类似的问答 C# Printable Characters