كيفية الهروب من الأقواس (الأقواس المتعرجة) في سلسلة تنسيق في .NET

StackOverflow https://stackoverflow.com/questions/91362

سؤال

كيف يمكن الهروب من الأقواس في الاستخدام 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}}";

ملحوظة:للهروب من الأحرف الخاصة عادة عليك استخدام .لفتح القوس المتعرج {، استخدم قوسًا إضافيًا مثل {{.لإغلاق القوس المتعرج }، استخدم قوسًا إضافيًا }}.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top