我怎么能忽略替换文本在特定的两个符号

本文关键字:符号 两个 怎么能 替换 文本 | 更新日期: 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);