Tôi tự hỏi nếu có bất kỳ lớp trợ giúp nào trong khung công tác .NET (hoặc ở một nơi khác) có thể chuyển đổi các ký tự thành các bảng điều khiển ConsoleKey.Có phương pháp chuyển đổi nào lấy một char và tạo ra một ConsoleKey không?
e.g 'A' should become ConsoleKey.A
Trước khi ai đó hỏi lý do tôi muốn làm điều đó. Tôi muốn viết một trình trợ giúp có một chuỗi (ví dụ: 'Hello World') và chuyển đổi nó thành một chuỗi các đối tượng ConsoleKeyInfo. Tôi cần điều này cho một số bài kiểm tra đơn vị điên mà tôi đang chế nhạo đầu vào của người dùng.
Tôi chỉ là một chút mệt mỏi của việc tạo ra mã keo trên của riêng tôi vì vậy tôi nghĩ, có lẽ đã có một cách để chuyển đổi một char thành một ConsoleKey enum?
Đối với đầy đủ ở đây là những gì có vẻ công việc tuyệt vời cho đến nay
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());
}
Đây có phải là ký tự và chữ số không? Bạn không thể có ánh xạ 1 đến 1 vì 'ConsoleKey' không phân biệt ký tự vỏ và không chứa hầu hết các ký tự ASCII khác. – Groo
Đúng vậy. Phải biết tôi có nó chỉ cho nhân vật và khoảng trắng. Tôi cũng sẽ thêm dấu chấm và dấu phẩy. Lớp vỏ không quan trọng vì thông tin này sẽ được giữ nguyên trong đối tượng ConsoleKeyInfo trực tiếp dưới dạng char. – Christoph