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

时间:2016-09-23 17:03:48

标签: c# character identify

我使用以下代码段替换文字

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中没有替换的内容,我该怎么做呢

1 个答案:

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