2011-03-08 125 views
0

正則表達式確實什麼,如果我運行這段代碼: 輸入載:「geeeeekdldn」沒有任何反應

Regex.Replace(input, @"g(.|\n)*?n", string.Empty); 

正常輸入的正則表達式的值爲「」但是我還是後「geeeeekdldn」 有人可以幫我請

+0

如何製作控制檯應用程序並測試正則表達式?我這樣說是因爲我有0個正則表達知識。 – Vercas 2011-03-08 12:29:48

回答

5

您需要將Replace的輸出分配到一個新的字符串:

string output = Regex.Replace(input, @"g(.|\n)*?n", string.Empty); 

Replace不會更新輸入字符串 - 請參閱MSDN documentation - 因爲(正如Hans指出的),.NET字符串是不可變的,因此不能更改。所以任何操縱字符串的方法都必須返回一個新的字符串,而不是更新提供的字符串。

2

Regex.Replace函數其具有與作爲其返回值所作的替換字符串。目前你正在拋棄這個返回值。你可能想

string processedInput = Regex.Replace(input, @"g(.|\n)*?n", string.Empty); 
+0

這是什麼:@「g(。| \ n)*?n」是什麼意思? – SamekaTV 2011-03-08 13:39:26

+0

@Massimo這是一個正則表達式(大致)會匹配:一個'g',後跟一個或多個字符(包括換行符),但匹配儘可能少,後跟一個'n'。 – AakashM 2011-03-08 16:08:15

1

除了所有的(正確的)答案:在.NET中的字符串類型是不可變的,這意味着一個字符串值,只能更換,不能改變。因此,對字符串起作用的所有函數總是會返回一個新的函數,而不是更改參數。