【问题标题】:How can i ignore replace text within specific two symbol我如何忽略特定两个符号内的替换文本
【发布时间】:2016-09-23 17:03:48
【问题描述】:

我使用下面的代码 sn-p 替换文本

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 中的东西没有被替换,我该怎么做

【问题讨论】:

  • 在 | 处分割字符串会更容易吗?字符然后正常替换?
  • 最好使用正则表达式。请提供示例文本数据,以便我们更好地理解问题。
  • @jdweng 我提供了示例代码,还不够亲爱的???
  • 不,不,不。如果不查看示例数据,您将得到一个无效的错误答案。

标签: c# character identify


【解决方案1】:

根据您的 cmets,您需要在替换之前将字符串拆分为空格。之后,您将重新加入它。使用 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 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);

【讨论】:

  • 我有 500 行代码,例如 text = text.Replace("AB", "CD");那么我如何在所有这些代码中使用这种技术,我提供这个作为示例 |AB GF| ,我需要忽略用这个符号替换||
  • 我不明白?我只是使用数组来证明它适用于您的两个示例,它不是逻辑的一部分。您可以使用文本框进行输入。上面的代码正在剥离包含 | 的输入,并对其余部分使用替换功能。看到打印出来的“AB GF”变成了“CD HI”和“|AB GF|”变成了“AB GF”。
  • 我更新了我的帖子,现在请查看给定的代码... textBox2.Text = ((B.Contains("|")) ? B.Replace("|", "") : A );此代码也用于 textBox1_TextChanged 事件
  • 你的代码和我的代码做同样的事情:(当我输入 | 符号时,txtbox2 中的所有东西都没有被替换,我真的想忽略只替换 || 这两个符号之间的内容
  • 您一定是遗漏了什么?你的输入是什么样的?是“AB GF”和“|AB GF|”可能输入到 textBox1?还是您有类似“AB GF|AB GF|AC VB”的想法?
猜你喜欢
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 2012-03-13
相关资源
最近更新 更多