我如何忽略特定两个符号中的替换文本

How can i ignore replace text within specific two symbol

我使用以下代码片段来替换文本

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);

    }

但我想在 || 中忽略此替换技术这些 symbol.As 示例我的代码执行此操作

当我在 txtbox1 中键入 AB GF 时,txtbox2 将替换为以下 CD HI。 现在当我输入 |AB GF| 时我需要在 txtbox1 ,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");
    }
}

打印:

光盘嗨

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);