Формат десятичной строки в C # с помощью .toString()

#c# #decimal #string-formatting #tostring #currency-formatting

#c# #десятичная #форматирование строки #tostring #форматирование валюты

Вопрос:

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

Например. decimal result = 1935698.27;

Как я могу отформатировать это в String using .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"
  

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

Ответ №1:

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

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

Посмотрите на эту скрипку.

Комментарии:

1. Это не добавляет пробел между R и количеством.

2. Это так — см. Скрипку. Я скопировал / вставил вывод в ответ.

3. @BarryMichaelDoyle если вы посмотрите документы для спецификатора валюты, вы можете увидеть, как вы могли бы создать пользовательский NumberFormatInfo интерфейс для создания любого формата, который вам понравился. Помогает то, что фреймворк имеет значение по умолчанию для каждой культуры, поэтому обычно это не требуется.