2009-03-23 40 views
6

Tôi có một biểu hiện thường xuyên, định nghĩa trong một C# kiểu chuỗi đúng nguyên văn, như vậy:C# Chuỗi Format giữ chỗ trong Regular Expressions

private static string importFileRegex = @"^{0}(\d{4})[W|S]\.(csv|cur)"; 

3 chữ cái đầu tiên, ngay sau khi bắt đầu dòng regex (^) có thể được một trong nhiều kết hợp có thể có của các ký tự chữ cái.

tôi muốn làm một String.Format thanh lịch bằng cách sử dụng ở trên, đặt kết hợp 3 chữ của tôi về sự lựa chọn ngay từ đầu và sử dụng này trong thuật toán phù hợp với tôi, như thế này:

string regex = String.Format(importFileRegex, "ABC"); 

nào sẽ cho tôi một regex của ^ABC(\d{4})[W|S]\.(csv|cur)

Vấn đề là, khi tôi thực hiện String.Format, bởi vì tôi có các dấu ngoặc nhọn khác trong chuỗi (ví dụ: \d{4}) String.Format tìm kiếm thứ gì đó để đặt ở đây, không thể tìm thấy và cung cấp cho tôi một lỗi:

System.FormatException : Index (zero based) must be greater than or equal to zero and less than the size of the argument list. 

Bất cứ ai cũng biết làm thế nào, ngắn tách các chuỗi ra, tôi có thể thoát khỏi các dấu ngoặc nhọn khác hoặc một cái gì đó để tránh lỗi trên?

Trả lời

10

Hãy thử điều này (chú ý dấu ngoặc nhọn kép):

@"^{0}(\d{{4}})[W|S]\.(csv|cur)"

+0

gì ông nói cộng với câu hỏi này cũng bao gồm nó và câu trả lời có một liên kết MSDN: http://stackoverflow.com/questions/160742/how-do-you-put-and-in-a-format-string –

+0

Tôi luôn quên đôi ngoặc nhọn. +1. – OregonGhost

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