كيفية الهروب من الأقواس (الأقواس المتعرجة) في سلسلة تنسيق في .NET
-
01-07-2019 - |
سؤال
كيف يمكن الهروب من الأقواس في الاستخدام string.Format
.على سبيل المثال:
String val = "1,2,3"
String.Format(" foo {{0}}", val);
هذا المثال لا يطرح استثناءً، ولكنه يُخرج السلسلة foo {0}
هل هناك طريقة للهروب من الأقواس؟
المحلول
بالنسبة لك للإخراج foo {1, 2, 3}
عليك أن تفعل شيئا مثل:
string t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);
لإخراج أ {
انت تستخدم {{
والإخراج أ }
انت تستخدم }}
.
نصائح أخرى
نعم للإخراج {
في string.Format
عليك الهروب منه بهذه الطريقة {{
إذا هذا
String val = "1,2,3";
String.Format(" foo {{{0}}}", val);
سوف يخرج "foo {1,2,3}"
.
ولكن عليك أن تعرف عن خطأ في التصميم في C# وهو أنه من خلال اتباع المنطق أعلاه، ستفترض أن هذا الكود أدناه سيطبع {24.00}
int i = 24;
string str = String.Format("{{{0:N}}}", i); //gives '{N}' instead of {24.00}
لكن هذا يطبع {N}.وذلك لأن الطريقة التي يوزع بها C# الهروب من التسلسلات وتنسيق الأحرف.للحصول على القيمة المطلوبة في الحالة المذكورة أعلاه عليك استخدام هذا بدلاً من ذلك.
String.Format("{0}{1:N}{2}", "{", i, "}") //evaluates to {24.00}
مقالات مرجعيةString.Format gotach والأسئلة الشائعة حول تنسيق السلسلة
اوشكت على الوصول!تسلسل الهروب للقوس هو {{
أو }}
لذلك على سبيل المثال الخاص بك سوف تستخدم:
string t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);
يمكنك استخدام الأقواس المفتوحة المزدوجة وأقواس الإغلاق المزدوجة التي ستظهر قوسًا واحدًا فقط على صفحتك.
الهروب بين قوسين مجعد واستخدام استيفاء السلسلة يشكل تحديا مثيرا للاهتمام.تحتاج إلى استخدام الأقواس الرباعية للهروب من استيفاء السلسلة تحليل و string.format
تفسير.
الهروب بين قوسين:استيفاء السلسلة $("") وString.Format
string localVar = "dynamic";
string templateString = $@"<h2>{0}</h2><div>this is my {localVar} template using a {{{{custom tag}}}}</div>";
string result = string.Format(templateString, "String Interpolation");
// OUTPUT: <h2>String Interpolation</h2><div>this is my dynamic template using a {custom tag}</div>
جئت هنا للبحث عن كيفية إنشاء سلاسل json مخصصة (بدون إجراء تسلسل لفئة/كائن) في C#.بمعنى آخر كيفية الهروب من الأقواس وعلامات الاقتباس أثناء الاستخدام سلاسل محرفة في C# و "سلسلة حرفية حرفية"(سلاسل مزدوجة مقتبسة ببادئة "@")، مثل...
var json = $@"{{""name"":""{name}""}}";
[TestMethod]
public void BraceEscapingTest()
{
var result = String.Format("Foo {{0}}", "1,2,3"); //"1,2,3" is not parsed
Assert.AreEqual("Foo {0}", result);
result = String.Format("Foo {{{0}}}", "1,2,3");
Assert.AreEqual("Foo {1,2,3}", result);
result = String.Format("Foo {0} {{bar}}", "1,2,3");
Assert.AreEqual("Foo 1,2,3 {bar}", result);
result = String.Format("{{{0:N}}}", 24); //24 is not parsed, see @Guru Kara answer
Assert.AreEqual("{N}", result);
result = String.Format("{0}{1:N}{2}", "{", 24, "}");
Assert.AreEqual("{24.00}", result);
result = String.Format("{{{0}}}", 24.ToString("N"));
Assert.AreEqual("{24.00}", result);
}
أو يمكنك استخدام استيفاء سلسلة c# مثل هذا (الميزة متوفرة في C# 6.0)
var value = "1, 2, 3";
var output = $" foo {{{value}}}";
هدفي:
كنت بحاجة لتعيين القيمة "{CR}{LF}"
إلى أ string
عامل delimiter
.
الكود ج#:
string delimiter= "{{CR}}{{LF}}";
ملحوظة:للهروب من الأحرف الخاصة عادة عليك استخدام .لفتح القوس المتعرج {، استخدم قوسًا إضافيًا مثل {{.لإغلاق القوس المتعرج }، استخدم قوسًا إضافيًا }}.