C# String.format() 함수 알아보기

String.Format()는 어떤 변수나 값을 어떤 문자열에 삽입하여 하나의 문자열을 만듭니다. 이 과정에서 숫자 또는 변수 값을 특정 문자열 형식으로 변환할 수 있습니다.

1. 문자열에 변수 값 삽입

String.Format()의 Syntax는 다음과 같습니다.

format(string, object, object, ...)

아래와 같이 문자열에 특정 값들을 삽입하여 하나의 문자열로 만들 수 있습니다.

  • format 문자열이 {0}, {1}, {2}일 때, 인자로 전달된 값들이 순차적으로 {Index}에 삽입됩니다.
  • {0:X}, {1:F}, {2,10}처럼 format의 Index 뒤에 옵션을 입력하면, 값이 다른 형태로 변환됩니다.
namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int x = 1200;
            double y = 3.14;
            string z = "hello";

            string result = String.Format("x: {0}, y: {1}, z: {2}", x, y, z);
            Console.WriteLine(result);

            result = String.Format("x: {0:X}, y: {1:F}, z: {2,10}", x, y, z);
            Console.WriteLine(result);
        }
    }
}

Output:

x: 1200, y: 3.14, z: hello
x: 4B0, y: 3.140, z:      hello

2. 10진수, N자리수 숫자로 표현

D+N은 숫자를 10진수의 N자리 숫자로 표현합니다.

  • {0:D3} : 숫자가 3개자리 미만, 나머지는 0으로 채움
  • {0:D5} : 숫자가 5개자리 미만, 나머지는 0으로 채움
  • {0:D8} : 숫자가 8개자리 미만, 나머지는 0으로 채움
namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int n2 = 1234;

            Console.WriteLine(String.Format("1. {0:D3}", n2));
            Console.WriteLine(String.Format("2. {0:D5}", n2));
            Console.WriteLine(String.Format("3. {0:D6}", n2));
            Console.WriteLine(String.Format("4. {0:D8}", n2));
        }
    }
}

Output:

1. 1234
2. 01234
3. 001234
4. 00001234

3. 16진수 변환

숫자를 16진수로 변환하여 표현할 수 있습니다.

  • {0:X} : 16진수로 변환, 알파벳은 대문자로 표기
  • {0:x} : 16진수로 변환, 알파벳은 소문자로 표기
  • 0x{0:x8} : 16진수 앞에 Ox 추가, 8자리의 숫자로 표현
namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int n = 1234;
            Console.WriteLine(String.Format("1. {0:X}", n));
            Console.WriteLine(String.Format("2. {0:x}", n));
            Console.WriteLine(String.Format("3. 0x{0:x8}", n));
        }
    }
}

Output:

1. 4D2
2. 4d2
3. 0x000004d2

4. 통화 형식

숫자를 통화 형식으로 변환할 수 있습니다.

  • {0:C} : 통화 형식으로 변환, 소수점 아래 2자리까지 보여줌
  • {0:C0} : 통화 형식으로 변환, 소수점 아래 숫자 생략
  • {0:C4} : 통화 형식으로 변환, 소수점 아래 4자리까지 보여줌
namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int n = 1200000000;
            Console.WriteLine(String.Format("1. {0:C}", n));
            Console.WriteLine(String.Format("2. {0:C0}", n));
            Console.WriteLine(String.Format("3. {0:C4}", n));
        }
    }
}

Output:

1. $1,200,000,000.00
2. $1,200,000,000
3. $1,200,000,000.0000

5. 3자리마다 Comma 입력

아래와 같이 3자리 마다 Comma를 입력할 수 있습니다.

  • {0} : 변수의 값이 입력됨
  • {0:N0} : 3자리 단위 마다 comma가 추가됨, 소수점 아래 숫자는 보여주지 않음
  • {0:N2} : 3자리 단위 마다 comma가 추가됨, 소수점 아래 2자리 숫자까지 보여줌
namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int n = 1200000000;

            Console.WriteLine(String.Format("1. {0}", n));
            Console.WriteLine(String.Format("2. {0:N0}", n));
            Console.WriteLine(String.Format("3. {0:N2}", n));
        }
    }
}

Output:

1. 1200000000
2. 1,200,000,000
3. 1,200,000,000.00

6. 반올림

0.#와 같은 형식으로 소수점 아래 몇자리에서 반올림을 할 수 있습니다.

  • 0.# 소수점 아래 2자리에서 반올림을하여 소수점 아래 1자리까지 표현
  • 0.### 소수점 아래 4자리에서 반올림을하여 소수점 아래 3자리까지 표현
namespace Example {
    public class Program {
        public static void Main(string[] args) {

            double n = 12.345678;

            Console.WriteLine(String.Format("1. {0:0.#}", n));
            Console.WriteLine(String.Format("2. {0:0.##}", n));
            Console.WriteLine(String.Format("3. {0:0.###}", n));
            Console.WriteLine(String.Format("4. {0:0.####}", n));
            Console.WriteLine(String.Format("5. {0:0.#####}", n));
        }
    }
}

Output:

1. 12.3
2. 12.35
3. 12.346
4. 12.3457
5. 12.34568

7. 부동 소수점, 고정 소수점 표현

  • {0:F} : 고정 소수점 형식으로 표현, 소수점 아래 3자리까지 보여줌
  • {0:F2} : 고정 소수점 형식으로 표현, 소수점 아래 2자리까지 보여줌
  • {0:E} : 부동 소수점 형식으로 표현, 소수점 아래 6자리까지 보여줌
  • {0:E2} : 부동 소수점 형식으로 표현, 소수점 아래 2자리까지 보여줌
namespace Example {
    public class Program {
        public static void Main(string[] args) {

            double n = 1234.5;

            Console.WriteLine(String.Format("1. {0:F}", n));
            Console.WriteLine(String.Format("2. {0:F2}", n));
            Console.WriteLine(String.Format("3. {0:E}", n));
            Console.WriteLine(String.Format("4. {0:E2}", n));
        }
    }
}

Output:

1. 1234.500
2. 1234.50
3. 1.234500E+003
4. 1.23E+003

8. 패딩

특정한 공간을 할당하고, 숫자를 오른쪽 또는 왼쪽에 배치시킬 수 있습니다.

  • {0,10:D} : 10개 공간을 할당하고 숫자를 10진수로 표현하고 오른쪽에 배치
  • {0,-10:D} : 10개 공간을 할당하고 숫자를 10진수로 표현하고 왼쪽에 배치
  • {0,10:X} : 10개 공간을 할당하고 숫자를 16진수로 표현하고 오른쪽에 배치
  • {0,-10:F} : 10개 공간을 할당하고 숫자를 고정 소수점으로 표현하고 왼쪽에 배치
namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int n = 1234;
            Console.WriteLine(String.Format("1. ({0,10:D})", n));
            Console.WriteLine(String.Format("2. ({0,-10:D})", n));
            Console.WriteLine(String.Format("3. ({0,10:X})", n));
            Console.WriteLine(String.Format("4. ({0,-10:X})", n));

            double n2 = 123.4;
            Console.WriteLine(String.Format("3. ({0,10:F})", n2));
            Console.WriteLine(String.Format("4. ({0,-10:F})", n2));
        }
    }
}

Output:

1. (      1234)
2. (1234      )
3. (       4D2)
4. (4D2       )
3. (   123.400)
4. (123.400   )
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha