我怎么能忽略替换文本在特定的两个符号
本文关键字:符号 两个 怎么能 替换 文本 | 更新日期: 2023-09-27 18:08:44
我使用以下代码片段来替换文本
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。现在我需要当我在txtbox1中输入|AB GF|时,txtbox2替换为AB GF
我用这段代码来做这个
textBox2.Text = ((B.Contains("|")) ? B.Replace("|", "") : A);
但是这不起作用,在这个符号之后,所有包含在txtbox1中的东西都没有被替换,我怎么能做到这一点
根据您的注释,您将希望在进行替换之前在空格上分割字符串。然后你要把它们重新连接起来。这在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嗨
AB嗨
看你的代码。如果您需要避免使用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);