我真的不擅长解释事情,但我会尽力而为。
我正在制作一个小程序,可以在您键入时将一个单词转换为另一个单词。键入的每个字母都会经过这部分代码,根据整个单词的索引位置将其更改为不同的字母。
我的问题是,当有重复的字母时,重复的字母不会根据它们在单词中的位置而改变,而是根据第一次出现而改变。
例如,这组成了单词“bacca”。如果你把它放在代码中,它应该改为“vrwiy”,但改为“vrwwr”。我也知道为什么会这样。这是因为 switch 语句循环遍历需要转换的单词。但是,我不知道如何根据每个字符在字符串索引中的位置来更改每个字符。我认为 LastIndexOf() 方法可能会起作用,但它只是颠倒了顺序。所以如果我输入字母“a”,它会输出为“n”,但如果我输入“aa”,它会将第一个“a”切换为“r”,因为第二个在 IndexOf 1 get 更改为“r”。
private void inputTbox_TextChanged(object sender, EventArgs e)
{
List<string> rawZnWordList = new List<string>();
foreach (char a in inputTextBox.Text)
{
switch (inputTextBox.Text.IndexOf(a))
{
case 0:
switch (a)
{
case 'a':
rawZnWordList.Add("n");
continue;
case 'b':
rawZnWordList.Add("v");
continue;
case 'c':
rawZnWordList.Add("a");
continue;
default:
break;
}
continue;
case 1:
switch (a)
{
case 'a':
rawZnWordList.Add("r");
continue;
case 'b':
rawZnWordList.Add("x");
continue;
case 'c':
rawZnWordList.Add("z");
continue;
default:
break;
}
continue;
case 2:
switch (a)
{
case 'a':
rawZnWordList.Add("t");
continue;
case 'b':
rawZnWordList.Add("l");
continue;
case 'c':
rawZnWordList.Add("w");
continue;
default:
continue;
}
continue;
case 3:
switch (a)
{
case 'a':
rawZnWordList.Add("u");
continue;
case 'b':
rawZnWordList.Add("i");
continue;
case 'c':
rawZnWordList.Add("o");
continue;
default:
break;
}
continue;
case 4:
switch (a)
{
case 'a':
rawZnWordList.Add("y");
continue;
case 'b':
rawZnWordList.Add("m");
continue;
case 'c':
rawZnWordList.Add("d");
continue;
default:
break;
}
continue;
default:
break;
}
}
string finalZnWord = string.Join("", rawZnWordList.ToArray());
outputTextBox.Text = finalZnWord;
}