我使用以下代码段替换文字
private void textBox1_TextChanged(object sender, EventArgs e)
{
string A = textBox1.Text.Trim();
string B = textBox1.Text.Trim();
A = A.Replace("AB", "CD");
A = A.Replace("GF", "HI");
A = A.Replace("AC", "QW");
A = A.Replace("VB", "GG");
textBox2.Text = (A);
}
但我想在||中忽略这种替换技术这些符号。作为一个例子,我的代码执行此操作
当我在txtbox1中键入AB GF时,txtbox2替换为以下CD HI。 现在我需要我输入| AB GF |在txtbox1中,txtbox2替换为AB GF
我使用此代码执行此操作
textBox2.Text = ((B.Contains("|")) ? B.Replace("|", "") : A);
但在|之后这不起作用这个符号全部包含txtbox1中没有替换的内容,我该怎么做呢
答案 0 :(得分:1)
根据您的评论,您需要在替换之前将字符串拆分为空格。之后你会把它们全部加在一起。 Linq可以很容易。
public Main()
{
var strings = new string[]{ "AB GF", "|AB| GF" };
foreach (var s in strings)
Console.WriteLine(String.Join(" ", s.Split(' ').Select(x => ReplaceText(x))));
}
string ReplaceText(string text)
{
if (text.Contains("|"))
return text.Replace("|", String.Empty);
else
{
text = text.Replace("AB", "CD");
text = text.Replace("GF", "HI");
text = text.Replace("AC", "QW");
return text.Replace("VB", "GG");
}
}
打印:
CD HI
AB HI
查看你的代码。如果您需要避免使用ReplaceText方法。这样的事情会起作用。
string A = textBox1.Text.Trim();
var subStrings = A.Split(' ');
for (int i = 0; i < subStrings.Count(); i++)
{
if (subStrings[i].Contains("|"))
subStrings[i] = subStrings[i].Replace("|", String.Empty);
else
{
subStrings[i] = subStrings[i].Replace("AB", "CD");
subStrings[i] = subStrings[i].Replace("GF", "HI");
subStrings[i] = subStrings[i].Replace("AC", "QW");
subStrings[i] = subStrings[i].Replace("VB", "GG");
}
}
textBox2.Text = String.Join(" ", subStrings);