2009-12-10 83 views
7

如果我有兩個字符串.. 說C#:如何刪除2個字符串之間的匹配子字符串?

字符串1 = 「你好親愛的c'Lint」

字符串2 = 「親愛的」

..我想比較第一個字符串刪除匹配子串..
上面的字符串對結果是:

「你好    c'Lint」

(即,之間的兩個空間的「Hello 「」c'Lint「

爲簡單起見,我們假設string2將是string1的子集。(我的意思是string1將包含字符串2)..

回答

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; 

希望它有幫助。它只會刪除第一次發生。

+0

(豎起大拇指)thanx .. weldone :) – 2009-12-10 11:14:52

11

什麼

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; 
}); 
+4

這將是 字符串1 =字符串1。替換(字符串2, 「」); :O) – hhravn 2009-12-10 09:07:05

+1

雅它的工作原理..謝謝:) – 2009-12-10 09:10:09

5
string1.Replace(string2, ""); 

注意,這將刪除全部string2發生string1內。

+0

樂施會..很好..那麼如何避免這種情況。我的意思是,想,如果我想只刪除字符串2中首次出現的呢? – 2009-12-10 09:14:13

6

你可能寧願想嘗試

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

否則你最終會在中間2位。

+0

不,我想要那個空間:) – 2009-12-10 09:11:58

+0

所以你需要在中間的雙空間? – 2009-12-10 09:12:38

+0

但是你的回答也是有價值的。所以+ – 2009-12-10 09:12:45

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)

+0

哦!你的代碼更容易理解.. thanx :) – 2009-12-10 11:20:37

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; 
}** 
相關問題