Числовой формат C #: начальный плюс и пробелы - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь отобразить цифры в финансовом отчете следующим образом:

+   5000
+    176
-  10000
- 620230

Так что мне нужно распечатать номер длиной 6 цифр с начальным знаком.

Я пытался объединить ведущий знак с ведущими пробелами, как это: String.Format("{0,7:+#;-#;+0}", value);, но оказалось, что это дает мне:

   +5000
    +176
  -10000
 -620230

Есть ли способ использовать String.Format для получения нужного мне результата?

Редактировать : Я понимаю, что мог бы создать свою собственную функцию форматирования для достижения этого результата, и я использовал ее. Я из любопытства прошу String.Format посмотреть, можно ли это сделать.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Вам нужен какой-то трюк для объединения частей (знак и число). Вот как это делается:

string.Format("{0:+;-;+}{0,7:#;#;0}",someNumber);

{0,7:#;#;0} отформатирует число так, чтобы отображалось только абсолютное значение. В то время как первая часть {0:+;-;+} будет просто отображать знак в соответствии со значением. Вы можете создать свой собственный метод для переноса этой строки кода для удобства.

0 голосов
/ 02 мая 2018

Вот метод, который возвращает отформатированную строку. Это самоочевидно.

static string FormatFinancialNumber(int number) {
    string sign = number < 0 ? "-" : "+"; // decide the sign
    return sign + Math.Abs(number).ToString().PadLeft(7); // Make the number part 7 characters long
}

Использование:

Console.WriteLine(FormatFinancialNumber(1));
Console.WriteLine(FormatFinancialNumber(-12));
Console.WriteLine(FormatFinancialNumber(123));
Console.WriteLine(FormatFinancialNumber(-1234));
Console.WriteLine(FormatFinancialNumber(12345));

Выход:

+      1
-     12
+    123
-   1234
+  12345
...