2013-01-16 146 views
2

我想從C#中的字符串替換特定的子字符串。替換特定的字符串C#?

我的字符串是:This is a car.

,我試圖從這個串碼 'A' 用的String.Empty替換:

data = data.Replace("a", string.Empty); 

但我的輸出是:

This is c r. 

我只是想刪除孤立的'a'的發生,而不是當這個字/字用於其他一些字(如汽車)。

我要像一部份輸出:This is car.

我怎樣才能做到這在C#?

+0

哇,許多熱門的觸發器人:-) – Christoffer

回答

5

您需要一個正則表達式模式,它只能匹配單詞邊界上的「a」。 "\b"在正則表達式表示字邊界:

Regex.Replace("this is a car", @"\ba\b", "") 

如果你想匹配大寫字母「A」,以及,確保你的模式是不區分大小寫(RegexOptions.IgnoreCase)或明確將「A」添加到圖案像"\b[Aa]\b"

+1

這會在給定的測試用例中留下兩個相鄰的空格。 –

+0

@WizardofOgz它的行爲與編寫的代碼類似。當然,該行與輸出不匹配,所以我不確定期望的行爲究竟是什麼。 –

+0

謝謝!有效。 – Arry

0

改爲搜索字符串「a」,並用空格替換以保持句子結構正確;

data = data.Replace(" a ", " "); 
1

也搜索空間。

data = data.(" a ", " ") 
+0

有人不同意這個答案顯然 –

+0

是的,看到四個人在幾秒鐘內拍攝相同的單行內容很有趣,但所有人在同一時間投下的票更加搞笑 – Christoffer

+0

請參閱@Zdravko Danev,瞭解您的解決方案未涵蓋的情況。 – mbeckish

1

您可以使用正則表達式並限制爲符合條件的單詞「a」的實例。

string input = "This is a car. A thing to watch out for."; 
string output = Regex.Replace(input, "\ba\b", ""); 

//Results in "This is car. A thing to watch out for." 

您還可以添加一個字符類來處理大寫和小寫以及任何其他字符。恩。 \ S [AA] \ S

的\ s表示任何空白字符

+0

你能用一個例子來解釋一下嗎? – Arry

2

你是什麼意思與 '隔離occurence'?它是也許這樣的事情你真的後:

data.Replace(" a ", " "); 
2

你需要做幾個不同的情況,但可以肯定的是可能的:

  • 一個在句首「A車流逝 「 - > s.StartsWith( 」A 「)

  • 一箇中間 」這是一輛「 - >替換(」 A「,」「)

+0

您忘記了字符串以'a'結尾的情況,這是必需的,因爲要替換的字符串有一個尾部空格:-) – Christoffer

+0

這是可以接受的解決方案,但似乎並不是一個很好的方法。有沒有更好的方法來實現這一目標? 感謝您的回答! – Arry

+0

@Arry--你不喜歡Mehrdad Afshari的解決方案嗎? – mbeckish