【发布时间】:2016-05-26 20:58:45
【问题描述】:
我正在制作一个打字游戏,我需要列出一个字符串中的每个字符,以便我可以定义代码应该期望的输入。
我试过了:
static List<char> chars = "This is my string".ToCharArray().ToList();
但是因为 char 不包含大小写信息,所以会抛出这个错误:
ArgumentException: InputKey named: T 未知。
我知道 char 行不通,我需要每个字母都是字符串,而不是 char。所以,我创建了一个使用 Substring 的方法:
static List<string> ToStringArray(string input)
{
List<string> strings = new List<string>();
for (int i = 0; i < input.Length; i++)
{
strings.Add(input.Substring(i, 1));
}
return strings;
}
static List<string> strings = ToStringArray("This is my string");
但显然 Substring 正在转换为 char 因为我的代码仍然抛出相同的错误,如果我将 substring 的长度更改为 2 我的代码再次工作。如何强制 Substring 不转换为 char?还是我应该以完全不同的方式解决这个问题?
【问题讨论】:
-
什么会引发错误?第一行绝对没有,。虽然您可以将第一行缩短为
List<char> chars = "This is my string".ToList(); -
“但是因为 char 不包含大写”。
Char有许多静态方法,例如IsUpper,它为您提供大写信息。请参阅:msdn.microsoft.com/en-us/library/system.char.isupper.aspx 因此无需再次将它们全部转换为字符串。我也不确定是什么错误,因为我在任何地方都看不到“InputKey”。 -
什么是“它”?你的错误上面的行没有抛出那个错误,那么它在做什么呢?
-
我弄错了我的代码的哪一部分引发了错误。是我的 Input.GetKeyDown 检测导致问题的用户输入。感谢您指出我愚蠢的疏忽,这使我找到了解决问题的方法。我将使用 if 语句来检测 capslock 是否打开或在需要时按下 shift。写完代码后,我会发布我的代码。