C#:如何删除2个字符串之间的匹配子字符串?

时间:2009-12-10 09:04:15

标签: c# string string-matching

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

  

string1 =“Hello亲爱的c'Lint”

  

字符串2 = “亲爱的”

..我想首先比较字符串删除匹配的子字符串..
上述字符串对的结果是:< / I>

  

“你好c'Lint”

(即“Hello”“c'Lint”)之间的两个空格
为简单起见,我们假设string2将是string1的子集..(我的意思是string1将包含string2)..

6 个答案:

答案 0 :(得分:13)

怎么样?
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;
});

答案 1 :(得分:9)

仅限此:

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;

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

答案 2 :(得分:6)

您可能更愿意尝试

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

否则你最终会在中间留下2个空格。

答案 3 :(得分:5)

string1.Replace(string2, "");

请注意,这将删除string2中{em} {/ 1>}的所有次出现。

答案 4 :(得分:2)

离开我的头顶,删除第一个实例可以这样做

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)

答案 5 :(得分:0)

尝试这一个只有一行代码...

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;
}**