我在解釋事情上真的很糟糕,但我會盡我所能。尋找重複的字符索引
我正在製作一個小程序,可以在輸入時將一個單詞轉換爲另一個單詞。鍵入的每個字母都會經過這段代碼,根據其整個單詞的索引位置將其更改爲不同的字母。
這裏我的問題是,當有重複的字母時,重複的字母不會根據它們在單詞中的位置而改變,而是第一次出現。
例如,這構成單詞「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循環會解決它,但我不知道如何格式化它。 –