我在解释事情上真的很糟糕,但我会尽我所能。寻找重复的字符索引
我正在制作一个小程序,可以在输入时将一个单词转换为另一个单词。键入的每个字母都会经过这段代码,根据其整个单词的索引位置将其更改为不同的字母。
这里我的问题是,当有重复的字母时,重复的字母不会根据它们在单词中的位置而改变,而是第一次出现。
例如,这构成单词“bacca”。如果你通过代码,它应该改变为“vrwiy”,而是改为“vrwwr”。我知道这是为什么。这是因为switch语句遍历需要转换的单词。然而,我不知道如何根据字符串索引内的各个位置更改每个字符。我想也许LastIndexOf()方法会起作用,但它只是颠倒了顺序。因此,如果我要输入字母“a”,它会显示为“n”,但如果我输入“aa”,则会将第一个“a”切换为“r”,因为第二个位于IndexOf 1个变成了“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;
}
谢谢,这个作品完美。我认为也许for循环会解决它,但我不知道如何格式化它。 –