2012-06-15 32 views
6

Tôi đã gặp vấn đề và mọi trợ giúp sẽ được đánh giá cao.C# Regex - Khớp và thay thế, Tự động gia tăng

Vấn đề: Tôi có một đoạn văn và tôi muốn thay thế một biến xuất hiện nhiều lần (Biến = @Variable). Đây là phần dễ dàng, nhưng phần mà tôi đang gặp khó khăn đang cố gắng thay thế biến với các giá trị khác nhau.

Tôi cần cho mỗi lần xuất hiện để có giá trị khác nhau. Ví dụ, tôi có một hàm tính toán cho mỗi biến. Những gì tôi có cho đến nay là dưới đây:

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++ 
     } 
    } 

tôi có thể thay thế mỗi biến mà tôi cần phải có số trở về từ getReplacementNumber (i) chức năng, nhưng làm thế nào để tôi đặt nó trở lại vào đầu vào ban đầu của tôi với thay thế các giá trị, theo thứ tự giống nhau trong bộ sưu tập phù hợp?

Cảm ơn trước!

Marcus

+0

Loại trả lại của 'getReplacementNumber (i)' là gì? –

Trả lời

8

Sử dụng sự quá tải của Replace mà phải mất một MatchEvaluator như tham số thứ hai của mình.

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

Tôi giả định rằng đây getReplacementNumber(int i) trả về một string. Nếu không, bạn sẽ phải chuyển đổi kết quả thành chuỗi.

Xem hoạt động trực tuyến: ideone

+0

Làm việc như một sự quyến rũ! Cảm ơn sự giúp đỡ của bạn. Tôi đánh giá rất cao nó! –

Các vấn đề liên quan