2010-08-18 19 views
5

Tôi đang gặp sự cố với mã của mình.cách để thoát {trong hàm string.format trong vb

vấn đề là tôi muốn thoát khỏi {trong hàm string.Format ...

Tất nhiên có một cách để thoát khỏi nó là sử dụng {{(2 dấu ngoặc nhọn)

Có khác cách có thể thoát ra mà không sử dụng các dấu ngoặc kép.

cảm ơn

Trả lời

18

Tại sao lại có giải pháp khác? {{ được chỉ định là cách cách thoát niềng răng trong chuỗi định dạng ... Tôi không thể thấy lý do tại sao các nhà thiết kế API sẽ bao gồm một cách khác.

Tất nhiên, bạn có thể cũng cung cấp một tham số định dạng và sau đó cư nó với một cú đúp:

Dim text as String = string.Format("{0}{1}", "{", "}") 

sẽ cho "{}" như là một chuỗi, ví dụ ... nhưng tôi có thể' t thấy rằng đây là một giải pháp tốt hơn.

Có lẽ nếu bạn có thể nói lý do tại sao bạn không thích giải pháp thông thường (dấu ngoặc kép) chúng tôi có thể tư vấn cho bạn thay thế - nhưng không có ai trong định dạng "ngôn ngữ" m nhận thức.

+0

Tôi muốn biết một giải pháp có thể do bản chất của sự cố mà tôi đang nghiên cứu. Người dùng tìm kiếm một chuỗi cụ thể nói rằng {0} bây giờ tôi sử dụng string.format để tạo truy vấn T-sql của tôi làm cho văn bản = {0}. Văn bản biến này khi được sử dụng trong string.format tiếp theo gây ra một vấn đề, vì nó được coi là {0} không {{0}}, vì vậy tôi đang tìm kiếm một giải pháp thay thế. Dù sao, chúng tôi đã sửa đổi toàn bộ quá trình xây dựng truy vấn ngay bây giờ. Dù sao thì, câu trả lời tuyệt vời của jon đã trả lời cho câu hỏi của tôi, đó chắc chắn là một vinh dự. Cảm ơn. – Egalitarian

+3

@Egalitarian: Bạn không nên bao gồm giá trị của người dùng trong SQL của bạn để bắt đầu. Bạn nên sử dụng truy vấn được tham số hóa. Nếu không, bạn dễ bị tấn công SQL injection. –

+0

Vâng, đó là những gì chúng tôi nhận ra, vì vậy chúng tôi bắt đầu sử dụng truy vấn được tham số hóa. – Egalitarian

1

Không, thật không may là không thể.

1

Vâng, bạn có thể làm theo cách này, nhưng không phải là ý tưởng hay trong quan điểm của tôi.

Dim str1 As String = "Print this " & Chr(123) & "0" & Chr(125) & " string" 
    Dim str2 As String = "silly" 
    Console.WriteLine(String.Format(str1, str2)) 
    Console.ReadLine() 
Các vấn đề liên quan