我想知道.NET框架(或其他地方)中是否有任何幫助類將字符轉換爲ConsoleKey枚舉。是否有一個轉換方法需要一個char併產生一個ConsoleKey?
e.g 'A' should become ConsoleKey.A
之前有人問我爲什麼要這樣做。我想編寫一個接受字符串的幫助器(例如'Hello World')並將其轉換爲一系列ConsoleKeyInfo對象。我需要一些瘋狂的單元測試,我嘲笑用戶輸入。
我只是有點厭倦了自己創建膠水代碼,所以我想,也許已經有一種方法將char轉換爲ConsoleKey枚舉?
爲了完整這裏是什麼似乎工作的偉大,到目前爲止
public static IEnumerable<ConsoleKeyInfo> ToInputSequence(this string text)
{
return text.Select(c =>
{
ConsoleKey consoleKey;
if (Enum.TryParse(c.ToString(CultureInfo.InvariantCulture), true, out consoleKey))
{
return new ConsoleKeyInfo(c, consoleKey, false, false, false);
}
else if (c == ' ')
return new ConsoleKeyInfo(' ', ConsoleKey.Spacebar, false, false, false);
return (ConsoleKeyInfo?) null;
})
.Where(info => info.HasValue)
.Select(info => info.GetValueOrDefault());
}
僅用於字符和數字嗎?你不能有1對1的映射,因爲'ConsoleKey'不區分字符外殼,並且不包含大多數其他的ASCII字符。 – Groo 2012-07-15 20:08:02
是的,這是事實。知道我只有人物和空白。我也會添加句點和逗號。外殼並不重要,因爲這些信息將作爲char直接保存在ConsoleKeyInfo對象中。 – Christoph 2012-07-16 06:13:33