解释字符串中的新行
本文关键字:新行 字符串 解释 | 更新日期: 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!");
}
}