D.Y., в предыдущем посте во втором выборе букв имел ввиду следующий выбор (какую букву оставить), при повороте словаря
.Add("Y", "Й") или .Add("Y", "Ы")
.Add("'", "Ъ") или .Add("'", "Ь")
Код:
private void textBox3_TextChanged(object sender, EventArgs e)
{
string InputStr = textBox3.Text, BufStr = null, destiny = null;
int i = 0;
for (i = 0; i < InputStr.Length - 3; i++)
{
BufStr = null;
BufStr = BufStr + InputStr[i] + InputStr[i + 1] + InputStr[i + 2];
if (words1.ContainsKey(BufStr))
{
destiny = destiny + words1[BufStr];
i = i + 2;
continue;
}
BufStr = null;
BufStr = BufStr + InputStr[i] + InputStr[i + 1];
if (words1.ContainsKey(BufStr))
{
destiny = destiny + words1[BufStr];
i = i + 1;
continue;
}
BufStr = null;
BufStr = BufStr + InputStr[i];
if (words1.ContainsKey(BufStr))
{
destiny = destiny + words1[BufStr];
continue;
}
destiny = destiny + BufStr;
}
if (i == InputStr.Length - 3)
{
BufStr = null;
BufStr = BufStr + InputStr[i] + InputStr[i + 1] + InputStr[i + 2];
if (words1.ContainsKey(BufStr))
{
destiny = destiny + words1[BufStr];
i = i + 3;
}
}
if (i == InputStr.Length - 2)
{
BufStr = null;
BufStr = BufStr + InputStr[i] + InputStr[i + 1];
if (words1.ContainsKey(BufStr))
{
destiny = destiny + words1[BufStr];
i = i + 2;
}
}
while (i < InputStr.Length)
{
BufStr = null;
BufStr = BufStr + InputStr[i];
if (words1.ContainsKey(BufStr))
destiny = destiny + words1[BufStr];
else
destiny = destiny + BufStr;
i = i + 1;
}
textBox4.Text = destiny;
}
Можно, но С# знаю как соседа VB.NET по .NET, так что код лучше проверить на предмет соответствия традициям языка.
Например в VB.NET допустимо собирать строку с символов другой, в C# первоначально этой же строке нужно присвоить саму себя, а потом уже символы другой строки. По этому присуствует обнуление строки BufStr (BufStr = null;).