.NET এ ফর্ম্যাট স্ট্রিংয়ে কীভাবে ব্রেসগুলি (কোঁকড়ানো বন্ধনীগুলি) এড়ানো যায়


988

কীভাবে বন্ধনী ব্যবহার করে পালানো যায় string.Format

উদাহরণ স্বরূপ:

String val = "1,2,3"
String.Format(" foo {{0}}", val); 

এই উদাহরণটি একটি ব্যতিক্রম ছুঁড়ে না, তবে স্ট্রিংকে আউটপুট দেয় foo {0}

বন্ধনীগুলি থেকে বাঁচার কোনও উপায় আছে?


1
এমএসডিএন স্ট্রিং ফর্ম্যাটিং এফএকিউ এমএসডিএন.মিকায়সফ্রোসন / en-us / netframework / aa569608 : স্ট্রিং ফরম্যাটে আমি কোঁকড়ানো বন্ধনীটি কীভাবে লিখব? পালানো কোঁকড়ানো বন্ধনীগুলির সম্পর্কে আমার কী সচেতন হওয়া উচিত? "{42.00}" এর মতো কিছু লিখতে আমি কীভাবে স্ট্রিং ফর্ম্যাটিং ব্যবহার করতে পারি?
জিরলিওরি

1
দুর্ভাগ্যক্রমে, উপরের এমএসডিএন লিঙ্কটি ভেঙে গেছে। বর্তমানে, সঠিক লিঙ্কটি এমএসডিএন.মাইক্রোসফটকম /en- us / library/… বলে মনে হচ্ছে (নীচে QA বিভাগটি সন্ধান করুন, বা পৃষ্ঠায় "অব্যাহতি" সন্ধান করুন)।
পালো মরাজ

উত্তর:


1283

আউটপুট দেওয়ার জন্য আপনাকে foo {1, 2, 3}এমন কিছু করতে হবে:

string t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);

একটি আউটপুট {আপনি ব্যবহার {{এবং আউটপুট করার জন্য একটি }আপনি ব্যবহার }}

বা এখন, আপনি সি # স্ট্রিং অন্তঃসারণটিও এর মতো ব্যবহার করতে পারেন (সি # 6.0 এ উপলব্ধ বৈশিষ্ট্য)

এসকেপিং বন্ধনী: স্ট্রিং ইন্টারপোলেশন "(" ") । এটি সি # 6.0 এ নতুন বৈশিষ্ট্য

var inVal = "1, 2, 3";
var outVal = $" foo {{{inVal}}}";
//Output will be:  foo {1, 2, 3}

108
"{{" একটি বিন্যাসের স্ট্রিংয়ে পালানো বন্ধনী চরিত্র হিসাবে গণ্য করা হয়।
আইসলেভা

5
তবে আপনি যদি আপনার স্ট্রিং স্পেসিফায়ারে মান বিন্যাস যুক্ত করতে চান তবে নীচের গুরু কারা থেকে উত্তরটি পড়তে হবে।
নিক

অধ্যায় পড়ুন পলায়নের ধনুর্বন্ধনী কর্মকর্তা ডকুমেন্টেশনে কম্পোজিট বিন্যাস
জেপ্প স্টিগ নীলসন

8
এটি নতুন সি # 6 স্ট্রিং ইন্টারপোলেশন ( $"a = {{ {a} }}")
মাহমুদভ্যাকস

C # 6 স্ট্রিং ইন্টারপোলেশন পথে আরও সুনির্দিষ্ট, কোঁকড়ানো দ্বিগুণ হয়ে যাওয়ার মতো কাজ করে string v = $" foo {{{t}}}";। আপনার যদি অন্য চরিত্রগুলি থেকে বাঁচতে থাকে তবে এটি কোনও কোঁকড়ানো নয় আপনি $ @ কম্বোstring v2 = $@"\foo {{{t}}}\";
Nhan

209

হ্যাঁ আউটপুট {মধ্যে string.Formatআপনি ভালো এটা অব্যাহতি আছে{{

আমার স্নাতকের

String val = "1,2,3";
String.Format(" foo {{{0}}}", val);

আউটপুট হবে "foo {1,2,3}"

তবে আপনাকে সি # তে একটি ডিজাইন বাগ সম্পর্কে জানতে হবে যা উপরের যুক্তি দিয়ে আপনি ধরে নিবেন যে নীচের কোডটি প্রিন্ট করবে {24.00 will

int i = 24;
string str = String.Format("{{{0:N}}}", i); //gives '{N}' instead of {24.00}

তবে এটি প্রিন্ট করে {N} এটি কারণ সি # যেভাবে পালানোর সিকোয়েন্সগুলি এবং বিন্যাসের অক্ষরকে বিশদ করে। উপরের ক্ষেত্রে কাঙ্ক্ষিত মান পেতে আপনার পরিবর্তে এটি ব্যবহার করতে হবে।

String.Format("{0}{1:N}{2}", "{", i, "}") //evaluates to {24.00}

রেফারেন্স নিবন্ধ স্ট্রিং। ফরম্যাট গেটটাচ এবং স্ট্রিং ফর্ম্যাটিং এফএকিউ


12
আমি যদি এই বাগের মধ্যে দৌড়ে যাই তবে আমি লিখতাম string.Format( "{{{0}}}", i.ToString("N") );যা কারওর কাছে বেশি পঠনযোগ্য।
শুভনোমাদ

1
@ হ্যাপি এটি হতে পারে তবে আপনি নিজেরাই আলাদা আলাদা আলাদা আলাদা করে নির্দিষ্ট করতে চান বা একটি মিস করবেন এমন ঝুঁকি নিয়ে নিজেকে দু'বার ফরম্যাটপ্রাইডারটি নির্দিষ্ট করে দেখতে পাবেন।
রিক

74

প্রায় সেখানে! একটি ধনুর্বন্ধনী জন্য পলায়ন ক্রম হয় {{বা }}আপনার উদাহরণ হিসাবে আপনি ব্যবহার করবে:

string t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);

22

আপনি ডাবল ওপেন বন্ধনী এবং ডাবল ক্লোজিং বন্ধনী ব্যবহার করতে পারেন যা কেবলমাত্র আপনার পৃষ্ঠায় একটি বন্ধনী প্রদর্শন করবে।


13

পলায়নপরকিন্তু কোঁকড়া বন্ধনী এবং ব্যবহার স্ট্রিং ক্ষেপক একটি আকর্ষণীয় চ্যালেঞ্জ করে তোলে। স্ট্রিং ইন্টারপোলেশন পার্সিং এবং পার্সিং এড়াতে আপনাকে চতুর্ভুজ বন্ধনী ব্যবহার করতে হবে ।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>

8

সি # তে কীভাবে জসন স্ট্রিংগুলি অ্যাড-হক (কোনও শ্রেণি / অবজেক্টকে সিরিয়ালাইজ না করে) তৈরি করতে হয় তার সন্ধানে এখানে এসেছিলেন। অন্য কথায়, সি # এবং " ভার্ব্যাটিম স্ট্রিং লিটারালস " ('@' উপসর্গ সহ ডাবল উদ্ধৃত স্ট্রিং) ব্যবহার করার সময় কীভাবে ব্রেস এবং কোটগুলি থেকে রক্ষা পাওয়া যায় ...

var json = $@"{{""name"":""{name}""}}";

5
[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);
}

2

অথবা আপনি সি # স্ট্রিং এর মতো ব্যবহার করতে পারেন (সি # 6.0 এ উপলব্ধ বৈশিষ্ট্য)

var value = "1, 2, 3";
var output = $" foo {{{value}}}";

1

এসকেপিং বন্ধনী: স্ট্রিং ইন্টারপোলেশন "(" "):

এখন, আপনি এই জাতীয় সি # স্ট্রিং ইন্টারপোলেশনও ব্যবহার করতে পারেন (সি # 6.0 এ উপলব্ধ বৈশিষ্ট্য)

var inVal= "1, 2, 3";
var outVal= $" foo {{{inVal}}}";
//Output will be:  foo {1, 2, 3}

0

আমার উদ্দেশ্য:

আমার "{CR}{LF}"একটি stringভেরিয়েবলের মান নির্ধারণ করা দরকার delimiter

কোড সি #:

string delimiter= "{{CR}}{{LF}}";

দ্রষ্টব্য: সাধারণত বিশেষ অক্ষরগুলি এড়াতে আপনাকে ব্যবহার করতে হবে। কোঁকড়ানো বন্ধনী opening খোলার জন্য, extra like এর মতো একটি অতিরিক্ত ব্যবহার করুন { কোঁকড়ানো বন্ধনী closing বন্ধ করার জন্য, একটি অতিরিক্ত}} ব্যবহার করুন}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.