2009-04-21 18 views

答えて

5

MatchEvaluatorはこれを行うことができますラムダではなく匿名のメソッド(同じ効果) - これとこの両方を示すためにMatch

string input = "FindbcFinddefFind", pattern = "Find"; 
int i = 1; 
string replaced = Regex.Replace(input, pattern, delegate(Match match) 
{ 
    string s = match.Value.ToUpper() + i; 
    i++; 
    return s; 
}); 
3

MatchEvaluatorが必要なオーバーロードを使用し、代理人実装内でカスタム置換文字列を指定すると、すべての置換を1回のパスで行うことができます。例えば

match変数はまた、あなたが使用する必要がありますC#2.0でMatchなどへのアクセス権を持っていることを

string input = "FindbcFinddefFind", pattern = "Find"; 
int i = 1; 
string replaced = Regex.Replace(input, pattern, match => "REPLACE" + i++); 

注:

var str = "aabbccddeeffcccgghhcccciijjcccckkcc"; 
var regex = new Regex("cc"); 
var pos = 0; 
var result = regex.Replace(str, m => { pos++; return "Replace" + pos; }); 
関連する問題