【问题标题】:Substring Issue: Substring converting to char子字符串问题:子字符串转换为字符
【发布时间】: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&lt;char&gt; 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。写完代码后,我会发布我的代码。

标签: c# string char substring


【解决方案1】:

我认为您可能从一个比实际需要的更复杂的角度来处理这个问题。

如果你有:

string testString = "This is my string";

然后您已经可以通过索引访问每个单独的字符,例如 testString[1](即 'h')

如果你担心大小写,那么你可以引用字符串

testString.ToLower();

【讨论】:

  • 按索引访问字符串会返回一个字符。您使用 ToLower 的解决方案将删除我需要保留的任何大写信息。如果我不这样做,我的打字游戏将接受小写和大写字母,就好像它们是相同的输入一样。
  • 我认为您需要在您的问题中提供更多信息。目前尚不清楚您要完成什么。
猜你喜欢
  • 2017-04-24
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多