Char.IsControl方法无法将某些字符识别为控件

时间:2019-05-29 08:30:00

标签: c#

我注意到C#'Char.IsControl'方法无法识别某些字符作为控件。例如,以下代码对两个值都输出false:

char pilcrow = '\u00B6';
char softHyphen = '\u00AD';
Console.Write("{0},{1}",char.IsControl(pilcrow), char.IsControl(softHyphen)); // -> 'false,false'

这是预期的行为吗?我需要在代码中转义这些字符。

1 个答案:

答案 0 :(得分:1)

那些不是控制字符。一个是pilcrow sign,它属于Punctuation, Other [Po]类别,另一个是软连字符,这是一种不可见的格式字符,会影响文本的连字符方式。

关于它们没有什么特别的,实际上,您可能在Word中编写段落时使用软连字符,并且想要控制某些单词的连字符。 Word使用¶作为段落标记-段落结尾的可视化。它不影响格式设置,只是表示段落结尾的常用方法。在这方面,它与²,³,§,¶,¤,¦,°,±,½,¬(仅按住Right Alt和敲击键)没什么不同

.NET字符串使用Unicode,因此无需转义这些字符。您可以直接输入。

打印也没有问题-这些字符毕竟用于文档处理中。软连字符控制UI或打印引擎在渲染到屏幕或纸张期间如何布置文本。

如果某人不希望打印这些字符,则只需执行简单的string.Remove即可。除去连字符可能会影响文本的打印方式,而长字会移至下一行。我在前一句的Removing中添加了连字符以强制进行连字符。没有它,Removing将会移至下一行