2015-03-30 2 views
1

Почему этот код не работает правильно? Не понимаю ли я что-то?Ошибка форматирования текста C# с фигурной скобкой

System.Console.WriteLine("{{{0:c}}}", 12323.09m); 

Реальный выход:

{с}

Ожидаемый результат:

{$ 12,323.09}

+0

зачем вам нужен дополнительный '{}' вокруг валюты суммы – MethodMan

+0

Поразительно, на этот раз это на самом деле ошибка C#! См. Этот ответ: http://stackoverflow.com/a/15085178/369 – Blorgbeard

+0

'var currFormat = string.Format (" {0: c} ", 12323.09m);' yeilds '$ 12,323.09' – MethodMan

ответ

0

Попробуйте это:

System.Console.WriteLine("{" + String.Format("{0:C}", 12323.09) + "}");

+0

Это работает, но на самом деле не отвечает на вопрос, почему код OP не работает должным образом. – Blorgbeard

+2

@Blorgbeard Я думаю, у вас больше опыта в декодировании сломанного английского, чем у меня. – user700390

+0

Думаю, да. В одном предложении есть только пара напряженных ошибок. «Почему этот код не работает правильно?» является очевидным «расшифровкой». – Blorgbeard

3

Вопрос заключается в том, что {{{0:c}}} анализируется как {{{ ... }}}, а не как {{{ ... }}}.

Попробуйте

System.Console.WriteLine("{{{0:c}{1}", 12323.09m, '}'); 

Или увидеть подобный образец в MSDN (см побег Скобы):

int value = 6324; 
string output = string.Format("{0}{1:D}{2}", 
           "{", value, "}"); 
Console.WriteLine(output); 
Смежные вопросы