【问题标题】:C#: How to Delete the matching substring between 2 strings?C#:如何删除两个字符串之间的匹配子字符串?
【发布时间】:2010-12-25 04:18:24
【问题描述】:

如果我有两个字符串.. 说

string1="Hello Dear c'Lint"

string2="亲爱的"

..我想先比较字符串,然后删除匹配的子字符串..
以上字符串对的结果是:我>

“你好 c'Lint”

(即“Hello”“c'Lint”之间有两个空格)

为简单起见,我们'将假定 string2 将是 string1 的子集 ..(我的意思是 string1 将包含 string2)..

【问题讨论】:

    标签: c# string string-matching


    【解决方案1】:

    怎么样

    string result = string1.Replace(string2,"");
    

    编辑:我看到你更新的问题太晚了 :)
    出于好奇,使用 Regex.Replace 仅替换第一次出现的替代解决方案:

    string s1 = "Hello dear Alice and dear Bob.";
    string s2 = "dear";
    bool first = true;
    string s3 = Regex.Replace(s1, s2, (m) => {
        if (first) {
            first = false;
            return "";
        }
        return s2;
    });
    

    【讨论】:

    • 那将是 string1 = string1.Replace(string2,""); :o)
    【解决方案2】:

    只做这个:

    string string1 = textBox1.Text;
    string string2 = textBox2.Text;
    
    string string1_part1=string1.Substring(0, string1.IndexOf(string2));
    string string1_part2=string1.Substring(
        string1.IndexOf(string2)+string2.Length, string1.Length - (string1.IndexOf(string2)+string2.Length));
    
    string1 = string1_part1 + string1_part2;
    

    希望对您有所帮助。它只会删除第一次出现。

    【讨论】:

      【解决方案3】:

      您可能更愿意尝试

      string1 = string1.Replace(string2 + " ","");
      

      否则中间会出现2个空格。

      【讨论】:

      • 所以你需要中间的双倍空格?
      • 但是你的回答也很有价值..所以+
      【解决方案4】:
      string1.Replace(string2, "");
      

      请注意,这将删除string1 中出现的所有string2

      【讨论】:

      • 哦 .. 很好 .. 那么如何避免这种情况 .. 我的意思是,假设我只想删除第一次出现的 string2 呢?
      【解决方案5】:

      在我的脑海中,删除第一个实例可以像这样完成

      var sourceString = "1234412232323";
      var removeThis = "23";
      
      var a = sourceString.IndexOf(removeThis);
      var b = string.Concat(sourceString.Substring(0, a), sourceString.Substring(a + removeThis.Length));
      

      请在发布前测试 :o)

      【讨论】:

        【解决方案6】:

        Try This One 只有一行代码...

        string str1 = tbline.Text;
        string str2 = tbsubstr.Text;
        if (tbline.Text == "" || tbsubstr.Text == "")
        {
            MessageBox.Show("Please enter a line and also enter sunstring text in textboo");
        }
        else
        {
            **string delresult = str1.Replace(str2, "");**
            tbresult.Text = delresult;
        }**
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-14
          • 1970-01-01
          • 2014-11-15
          • 1970-01-01
          • 2016-07-01
          • 2018-11-25
          • 2018-07-28
          • 1970-01-01
          相关资源
          最近更新 更多