Вы заменяете код, который не будет работать так, как он есть, поскольку он просто будет менять символы для одной и той же строки (вы меняете A на C, а позже вы меняете C на W, поэтому ваш последний первый персонаж будет W, а не C, как вы хотите).
Ниже приведен слишком сложный метод (я также добавил метод, который проходит через каждый символ строки, выполняющий замену), но он должен работать, и вы можете изменить по мере необходимости. Успехов
private void textBox1_TextChanged(object sender, EventArgs e)
{
string A = textBox1.Text.Trim();
string[] Aarry = A.Split('|');
string cleanedString = "";
for (int i = 0; i < Aarry.Length; i++)
{
if (i % 2 == 0)
cleanedString += FixText(Aarry[i]) + " ";
else
cleanedString += Aarry[i] + " ";
}
textBox2.Text = cleanedString ;
метод ниже будет пройти через каждый символ делает замену
public string FixText(string A)
{
string newText = "";
for (int i = 0; i < A.Length; i++)
{
switch (A.Substring(i, 1))
{
case "A":
newText += A.Substring(i, 1).Replace("A", "C");
break;
case "F":
newText += A.Substring(i, 1).Replace("F", "H");
break;
case "C":
newText += A.Substring(i, 1).Replace("C", "W");
break;
case "B":
newText += A.Substring(i, 1).Replace("B", "G");
break;
default:
break;
}
}
return newText;
}
Для обработки> 500 строк типа замены у вас есть, вы могли бы настроить словарь, используя метод ниже:
public Dictionary<string, string> ReturnReplacementDictionary()
{
Dictionary<string, string> dictLibrary = new Dictionary<string,string)()
{
{"A","C"},
{"F","H"},
{"C","W"},
{"B","G"}
};
return dictLibrary;
}
В приведенном выше вы просто добавили бы все свои другие значения замены.
Тогда вы назвали бы использовать этот метод ниже вместо кожуха переключателя (Если вы не добавить символ/замены к методу словаря вы можете увидеть это будет просто установить сменную символ пробел):
public string FixTextUsingDictionary(string A)
{
Dictionary<string, string> replaceDict = ReturnReplacementDictionary();
string newText = "";
for (int i = 0; i < A.Length; i++)
{
string replacementLetter="";
if (replaceDict.TryGetValue(A.Substring(i, 1), out replacementLetter))
{
newText += replacementLetter;
}
// Added so that if the char is not in the dictionary the output will just have the original char
else { newText += A.Substring(i, 1); }
}
return newText;
}
Успехов
Это должно быть довольно просто. что ты уже испробовал? – STLDeveloper
Хе-хе: P я попробовал большинство кодов, и я также спросил вчера: http://stackoverflow.com/questions/39666067/how-can-i-ignore-replace-text-within-specific-two-symbol/39666263 ? noredirect = 1 # comment66640996_39666263_39666263 , но моя проблема не решена :(пожалуйста, помогите мне, если вы можете, мои образцы кодов во вчерашнем сообщении – SMW