Як уникнути дужок у використанні string.Format
.
Наприклад:
String val = "1,2,3"
String.Format(" foo {{0}}", val);
Цей приклад не кидає винятку, але виводить рядок foo {0}
.
Чи є спосіб уникнути дужок?
Як уникнути дужок у використанні 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);
Для виведення a, який {
ви використовуєте, {{
і для виведення використовуваного }
вами }}
.
або Тепер ви також можете використовувати c # string interpolation, як ця (функція доступна в C # 6.0)
Вихідні дужки: Інтерполяція рядків $ ("") . це нова функція в C # 6.0
var inVal = "1, 2, 3";
var outVal = $" foo {{{inVal}}}";
//Output will be: foo {1, 2, 3}
$"a = {{ {a} }}"
)
string v = $" foo {{{t}}}";
. Якщо у вас є інші символи, щоб уникнути, що не є кучерявим, ви можете використовувати $ @ combostring v2 = $@"\foo {{{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 FAQ та форматування рядків
string.Format( "{{{0}}}", i.ToString("N") );
який може бути читабельнішим для когось.
Уникнення фігурних дужок І використання стрипової інтерполяції викликає цікаве завдання. Щоб уникнути розбору та розбору рядків з інтерполяцією рядків, потрібно використовувати чотириразові дужки .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 ad-hoc (без серіалізації класу / об’єкта) у 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 # string interpolation, як ця (функція доступна в C # 6.0)
var inVal= "1, 2, 3";
var outVal= $" foo {{{inVal}}}";
//Output will be: foo {1, 2, 3}
Моя мета:
Мені потрібно присвоїти значення "{CR}{LF}"
для string
змінної delimiter
.
Код c #:
string delimiter= "{{CR}}{{LF}}";
Примітка. Щоб нормально уникати спеціальних символів, вам потрібно скористатися. Для відкриття фігурної дужки {використовуйте додатковий на зразок {{. Для закриття фігурної дужки} використовуйте одну додаткову}}.