2011-09-12 24 views
3

我有以下示例字符串:
$0$aaaaa$1$bbbbb$2$cccccc
其中美元標記之間有一些數字。我想用正則表達式的數量+ 1來代替每個數字,所以輸出應該是:
$1$aaaaa$2$bbbbb$3$cccccc正則表達式替換所有函數

我如何在C#爲此使用正則表達式?
我知道如何找到所有的數字:

string s = "$0$aaaaa$1$bbbbb$2$cccccc"; 
Regex regex = new Regex(@"\$(?<myNumber>.*?)\$"); 

MatchCollection matches = regex.Matches(s); 

foreach (Match match in matches) 
{ 
    Console.WriteLine(match.Groups["myNumber"]); 
} 

Console.WriteLine("\n\nFinal string = " + s); 
Console.ReadKey(); 

通過regex.Replace(...)我可以用一個值來替換他們,但我不知道如何使用正則表達式逐個更換號碼。

有誰知道該怎麼做?

最好的問候,
馬辛

回答

9
var result = Regex 
    .Replace(input, @"(?<=\$)\d+(?=\$)", m => (int.Parse(m.Value) + 1).ToString()); 
+3

+1令人印象深刻!對於任何感興趣的人,更多關於(?<= ...)和(?=)優化是什麼意思[here](http://msdn.microsoft.com/en-us/library/az24scfc.aspx#grouping_constructs) – bottlenecked

+0

@bottlenecked,謝謝! :-) –

+0

不錯,謝謝:) – mj82