2011-08-18 28 views
22

thể trùng lặp:
Escape curly brace '{' in String.FormatC# String.Format với Quăn Bracket trong chuỗi

C# có một phương thức String.Format cho phép bạn định dạng một chuỗi nhưng params chèn với các thẻ {0}{1}

Tôi đang cố gắng tạo một chuỗi json đơn giản yêu cầu dấu ngoặc nhọn nằm trong chuỗi và vì vậy phá vỡ các định dạng

String.Format("{ foo:'{0}', bar:'{1}' }", foo, bar); 

Thêm một lối thoát trước khi niềng răng không giúp

Ném một ngoại lệ nói chuỗi của tôi được định dạng không đúng cách, ai biết làm thế nào để làm được việc này?

+0

Trong Khung 4.6 hoặc cao hơn, bạn có thể làm điều này ... \t chuỗi moe = "Moe"; \t chuỗi ấu trùng = "Larry"; \t chuỗi xoăn = "{Curly}"; \t kết quả chuỗi = $ "1: {moe} 2: {larry} 3: {curly}"; – rwg

Trả lời

44

Bạn có thể thoát khỏi dấu ngoặc bằng cách nhân đôi chúng lên ở định dạng chuỗi của bạn:

string.Format("{{ foo: '{0}', bar: '{1}' }}", foo, bar); 
11

Bạn chỉ có thể sử dụng {{ hoặc }} để thoát khỏi một cú đúp xoăn.

Console.WriteLine(String.Format("{0}, {1}, {{{2}}}", "Moe", "Larry", "Curly")); 

sản xuất:

Moe, Larry, Curly {}

+5

Bạn cần phải cẩn thận về việc gấp ba lần trên niềng răng ... trong trường hợp này nó hoạt động, nhưng nhìn chung, chế độ xem phân tích cú pháp đó là '{{{' hoặc '}}}'. Nó có thể tốt hơn để tạo ra một {3} đó là cú đúp –

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