Форматировать десятичную строку в С# с помощью .ToString()

У меня есть сумма, хранящаяся в десятичной дроби result:

Eg. decimal result = 1935698.27;

Как я могу отформатировать это в String, используя .ToString(), чтобы оно выглядело так: R 1 935 698,27

Нужно сделать следующее:

  • Добавьте R (обратите внимание на пробел) перед String
  • Добавьте пробелы, чтобы сгруппировать значение по 3 (например, R 00 000 000 000,00)
  • Замените . на ,

Этот формат соответствует валютному формату южноафриканского рэнда.

Вот что у меня есть:

decimal result = 1935698.27;
string strResult = result.ToString("What should I put here?"); // Need help

// Expected strResult = "R 1 935 698,27"

Любая помощь высоко ценится!


person Barry Michael Doyle    schedule 02.10.2016    source источник


Ответы (1)


Это встроено — просто используйте южноафриканскую культуру и описатель формата валюты.

var result = 1935698.27m;
var ci = new CultureInfo("en-ZA");
var strResult = result.ToString("C", ci);
// strResult is R 1 935 698,27

См. эту скрипку.

person Charles Mager    schedule 02.10.2016
comment
Это не добавляет пробел между R и суммой. - person Barry Michael Doyle; 02.10.2016
comment
Это так - см. скрипку. Копирую/вставляю вывод в ответ. - person Charles Mager; 02.10.2016
comment
@BarryMichaelDoyle, если вы посмотрите на документы для спецификатора валюты, вы увидите, как вы можете создать собственный NumberFormatInfo для создания любого формата, который вам нравится. Помогает то, что фреймворк имеет значение по умолчанию для каждой культуры, поэтому обычно в этом нет необходимости. - person Charles Mager; 02.10.2016