2012-06-15 23 views
6

Bir sorunla uğraşıyorum ve herhangi bir yardım memnuniyetle karşılanacaktır.C# Regex - Eşleştir ve değiştir, Otomatik Arttırma

Sorun: Bir paragrafım var ve birkaç kez görünen bir değişkeni değiştirmek istiyorum (Variable = @Variable). Bu kolay bir parçadır, fakat zorlukla karşılaştığım bölüm, değişkeni farklı değerlerle değiştirmeye çalışmaktır.

Her bir olayın farklı bir değere sahip olmasına ihtiyacım var. Örneğin, her değişken için bir hesaplama yapan bir fonksiyona sahibim. Ne zamana kadar sahip aşağıdadır: Ben getReplacementNumber döndü numarası ile gereken her değişkenin yerini am güçlü

private string SetVariables(string input, string pattern){ 

    Regex rx = new Regex(pattern); 
    MatchCollection matches = rx.Matches(input); 
    int i = 1; 
    if(matches.Count > 0) 
    { 
     foreach(Match match in matches) 
     { 
      rx.Replace(match.ToString(), getReplacementNumber(i)); 
      i++ 
     } 
    } 

(i) işlevi, ama geri benim orijinal girişine koydu nasıl değiştirilen değerler, maç koleksiyonunda bulunan aynı sırayla mı?

Şimdiden teşekkürler!

Marcus

+0

'getReplacementNumber (i)' dönüş türü nedir? –

cevap

8

kullanımlar ikinci parametre olarak bir MatchEvaluator alır Replace aşırı yük.

string result = rx.Replace(input, match => { return getReplacementNumber(i++); }); 

Ben getReplacementNumber(int i) bir string döndüren burada tahmin ediyorum. Değilse, sonucu bir dizgeye dönüştürmeniz gerekir.

çevrimiçi çalışır duruma bakınız: ideone

+0

Bir çekicilik gibi çalıştım! Yardımın için teşekkürler. Çok takdir ediyorum! –

İlgili konular