为什么我得到的结果与 List<Char>.Contains(char) 中的情况相反
Why am I getting the opposite of what is true in List<Char>.Contains(char)
我已经在两个应用程序中测试过了;我传入 char 以寻找特殊字符的地方。
static void Main(string[] args)
{
ConsoleKeyInfo entered = Console.ReadKey();
char asChar = Convert.ToChar(entered.KeyChar);
Console.WriteLine(IsSpecialChar(asChar));
Console.ReadKey();
}
private static string IsSpecialChar(char dWord)
{
List<char> Special = new List<char>();
System.Globalization.NumberStyles hexer = System.Globalization.NumberStyles.HexNumber;
Special.AddRange(Enumerable.Range((int.Parse("21", hexer)), int.Parse("2f", hexer)).Select(x => Convert.ToChar(x)));
Special.AddRange(Enumerable.Range((int.Parse("3a", hexer)), int.Parse("40", hexer)).Select(x => Convert.ToChar(x)));
Special.AddRange(Enumerable.Range((int.Parse("5c", hexer)), int.Parse("60", hexer)).Select(x => Convert.ToChar(x)));
Special.AddRange(Enumerable.Range((int.Parse("7e", hexer)), int.Parse("7e", hexer)).Select(x => Convert.ToChar(x)));
if (Special.Contains(Convert.ToChar(dWord)))
{
return "Special";
}
else return "NA";
}
出于某种原因,Special.Contains 总是看到与事实相反的东西。
填充的一些字符是:
U+003F ? 3f QUESTION MARK
U+0040 @ 40 COMMERCIAL AT
U+0041 A 41 LATIN CAPITAL LETTER A
U+0042 B 42 LATIN CAPITAL LETTER B
字母 A 和 B 不应该存在。怎么回事?
Enumerable.Range 接受范围的开始 和范围的长度 而不是范围的开始和范围的 结束.
因此,您的范围根本不是您想要的范围。
我已经在两个应用程序中测试过了;我传入 char 以寻找特殊字符的地方。
static void Main(string[] args)
{
ConsoleKeyInfo entered = Console.ReadKey();
char asChar = Convert.ToChar(entered.KeyChar);
Console.WriteLine(IsSpecialChar(asChar));
Console.ReadKey();
}
private static string IsSpecialChar(char dWord)
{
List<char> Special = new List<char>();
System.Globalization.NumberStyles hexer = System.Globalization.NumberStyles.HexNumber;
Special.AddRange(Enumerable.Range((int.Parse("21", hexer)), int.Parse("2f", hexer)).Select(x => Convert.ToChar(x)));
Special.AddRange(Enumerable.Range((int.Parse("3a", hexer)), int.Parse("40", hexer)).Select(x => Convert.ToChar(x)));
Special.AddRange(Enumerable.Range((int.Parse("5c", hexer)), int.Parse("60", hexer)).Select(x => Convert.ToChar(x)));
Special.AddRange(Enumerable.Range((int.Parse("7e", hexer)), int.Parse("7e", hexer)).Select(x => Convert.ToChar(x)));
if (Special.Contains(Convert.ToChar(dWord)))
{
return "Special";
}
else return "NA";
}
出于某种原因,Special.Contains 总是看到与事实相反的东西。
填充的一些字符是:
U+003F ? 3f QUESTION MARK
U+0040 @ 40 COMMERCIAL AT
U+0041 A 41 LATIN CAPITAL LETTER A
U+0042 B 42 LATIN CAPITAL LETTER B
字母 A 和 B 不应该存在。怎么回事?
Enumerable.Range 接受范围的开始 和范围的长度 而不是范围的开始和范围的 结束.
因此,您的范围根本不是您想要的范围。