Fre*_*örk 29
这将为您提供一个列表,其中包含所有不被视为控制字符的字符:
List<Char> printableChars = new List<char>();
for (int i = char.MinValue; i <= char.MaxValue; i++)
{
char c = Convert.ToChar(i);
if (!char.IsControl(c))
{
printableChars.Add(c);
}
}
Run Code Online (Sandbox Code Playgroud)
您可能需要调查其他Char.IsXxxx方法以找到适合您要求的组合.
Jon*_*eet 20
这是Fredrik解决方案的LINQ版本.请注意,Enumerable.Range产生一个,IEnumerable<int>所以你必须先转换为字符.Cast<char>我相信会在3.5SP0工作,但从3.5SP1开始,你必须做一个"正确"的转换:
var chars = Enumerable.Range(0, char.MaxValue+1)
.Select(i => (char) i)
.Where(c => !char.IsControl(c))
.ToArray();
Run Code Online (Sandbox Code Playgroud)
我已经将结果创建为一个数组,因为这就是问题所要求的 - 尽管它不一定是最好的主意.这取决于用例.
请注意,这也不考虑完整的Unicode字符,只考虑基本多语言平面中的字符.我不知道它为高/低代理人返回什么,但至少知道单个char并不能真正让你代表一切:{