Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Emitting a colon via format string in .NET

Tags:

string

c#

.net

Does anyone know how to construct a format string in .NET so that the resulting string contains a colon?

In detail, I have a value, say 200, that I need to format as a ratio, i.e. "1:200". So I'm constructing a format string like this "1:{0:N0}" which works fine. The problem is I want zero to display as "0", not "1:0", so my format string should be something like "{0:1:N0;;N0}", but of course this doesn't work.

Any ideas? Thanks!

like image 369
user7239 Avatar asked Jun 24 '09 13:06

user7239


1 Answers

using System;

namespace ConsoleApplication67
{
    class Program
    {
        static void Main()
        {
            WriteRatio(4);
            WriteRatio(0);
            WriteRatio(-200);

            Console.ReadLine();
        }

        private static void WriteRatio(int i)
        {
            Console.WriteLine(string.Format(@"{0:1\:0;-1\:0;\0}", i));
        }
    }
}

gives

1:4
0
-1:200

The ; separator in format strings means 'do positive numbers like this; negative numbers like this; and zero like this'. The \ escapes the colon. The third \ is not strictly necessary as a literal zero is the same as the standard numeric format output for zero :)

like image 160
AakashM Avatar answered Sep 25 '22 22:09

AakashM