解释字符串中的新行

本文关键字:新行 字符串 解释 | 更新日期: 2023-09-27 17:50:27

上下文:我正在制作一个Simon Says游戏,但与普通的Simon Says(每次都生成随机序列(不同,由于游戏的性质,我希望使序列非随机,并基于textbox1.text。因此,例如:textbox1.text可能包含行"RYRG"。游戏解释为"红,黄,红,绿"。

问题:在一位非常乐于助人的用户的帮助下,我成功地编写了一些代码,可以准确地读取并将其解释为序列。我们使用Dictionary将字符与颜色进行匹配,但遗憾的是,这只适用于一行(例如"RGGB"(。请看一下下面的代码。如何使它读取多行(以便程序将其解释为:下一行=下一序列(?例如:

输入字符串textBox1.Text=

RGYR
RGGB
RGRG
RYBG
RYYB
GBRY
RYBG

代码:

private Color[] sequence;
//Declare dictionary
private Dictionary<char,Color>  stringTocolor = new Dictionary<char,Color>();
public SimonSays ()
{
    //add content to Dictionary
    stringTocolor.Add('R', Color.Red);
    stringTocolor.Add('G', Color.Green);
    stringTocolor.Add('B', Color.Blue);
    stringTocolor.Add('Y', Color.Yellow);
    Color[] colourset = newSequence(textBox1.Text.Length);
}
public Color[] newSequence(int length)
{
    Color[] array = new Color[length];
    //check dictionary has the char key or not
    for (int i = 0; i < textBox1.Text.Length; i++)
    {
        if (stringTocolor.ContainsKey(textBox1.Text[i]))
        {
             array[i] = stringTocolor[textBox1.Text[i]];
        }
        //give alert if wrong key
        else
        {
             MessageBox.Show("Wrong Colour input at index " + i + " of textbox string!");
        }
    }
    this.sequence = array;
    return array;
}
    public void newSequence (Color [] sequence)
    {
        this.sequence=sequence;
    }

解释字符串中的新行

您只需要忽略换行符''r''n

string puretext = textBox1.Text.Replace(Environment.NewLine, ""); //Ignore newline(s)
for (int i = 0; i < puretext.Length; i++)
{
    if (stringTocolor.ContainsKey(puretext[i]))
    {
         array[i] = stringTocolor[puretext[i]];
    }
    //give alert if wrong key
    else
    {
         MessageBox.Show("Wrong Colour input at index " + i + " of textbox string!");
    }
}