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

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

string1 =“Hello亲爱的c’Lint”

字符串2 =“亲爱的”

..我想首先比较字符串删除匹配的子字符串..
上面的字符串对的结果是:

“你好c’Lint”

(即 “Hello” “c’Lint” 之间的两个空格

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

这样做:

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; 

希望能帮助到你。 它只会删除第一次出现。

关于什么

 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 + " ",""); 

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

 string1.Replace(string2, ""); 

请注意,这将删除string1string2 所有出现。

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

 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)

试试这一个只有一行代码……

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