728x90

출처: http://msdn.microsoft.com/ko-kr/library/dd260048%28v=vs.95%29.aspx

출처: http://pullthelever.tistory.com/339

숫자 앞에 채우기 예제이다.

결론은 텍스트 박스에 넣을때

int intNextOrderNo = 343;

string strFormatOrderNo = String.Format("{0:D8}", intNextOrderNo);

결과는 00000343 이다.

 

모두 감사합니다.

{0:G}"

0은 문자열 옆의 인수들 중 몇 번째 인수(0부터 시작)를 가리킬건지 말한다.

ex)

Console.WriteLine("첫 번째 인수 {0:G}, 두 번째 인수 {1:G}, 세 번째 인수 {2:G}",10, 20, 30);

//결과-> 첫 번째 인수 10, 두 번째 인수 20, 세 번째 인수 30

//WriteLine 메서드는 출력하고나서 항상 한 줄 내려간다.

"{0}","{1}"

위와 같이 숫자 뒤에 :X 를 생략하면 문자열을 가리킬 수 있다. 문자형 char도 가능하다.

int, long, double, float, byte 등 정수형, 실수형도 가능하다.

Size,Point 같은 것도 가능하다

Console.WriteLine(string.Format("{0}, {1}, {2}","냠냠",'냔',123456789));

//결과-> 냠냠, 냔, 123456789
//String.Format에서도 사용한다.

시스템에 따라 \ 또는 $ 를 붙임, 소수점을 가질 수 있음

"{0:C}"

10진법 (D뒤의 숫자만큼 자리수를 맞춘다. 값이 없는 앞 자리들은 0으로 채운다)

ex) ("{0:D5}", 123); //-> 00123

"{0:D5}"

E(지수표시)를 이용한 소수표시 (E뒤의 숫자는소수점자리수)

ex)("{0:E1}",12345); //-> 1.2E+004

"{0:E}"

고정 소수점 (F뒤의 숫자만큼)으로 표시

ex) ("{0:D5}", 12.3); //-> 12.300

"{0:F5}"

E, F, D를 적절히 선택

"{0:G}"

','를 정수부분의 3자리마다 넣어 표시 (소수도 표시가능)

ex) 100,000,000

"{0:N}"

백분율 (소수를 X100해서 표시하고 %를 붙임)

"{0:P}"

16진법

"{0:X}






전체 자릿수 지정자와 함께 "D" 표준 숫자 형식 문자열을 사용하여 정수 앞에 0을 채울 수 있습니다. 사용자 지정 숫자 형식 문자열을 사용하면 정수와 부동 소수점 숫자 앞에 0을 채울 수 있습니다.이 항목에서는 두 메서드를 사용하여 숫자 앞에 0을 채우는 방법을 보여 줍니다.

특정 길이까지 정수 앞에 0을 채우려면

  1. 정수 값에서 표시할 자릿수를 결정합니다. 이 수에 선행 자릿수를 포함합니다.

  2. 정수를 10진수 값으로 표시할지 또는 16진수 값으로 표시할지를 결정합니다.

    1. 정수를 10진수 값으로 표시하려면 ToString(String) 메서드를 호출하고 문자열 "Dn"을 format 매개 변수의 값으로 전달합니다. 여기서 n은 최소 문자열 길이를 나타냅니다.

    2. 정수를 16진수 값으로 표시하려면 ToString(String) 메서드를 호출하고 문자열 "Xn"을 format 매개 변수의 값으로 전달합니다. 여기서 n은 최소 문자열 길이를 나타냅니다.

    합성 서식 지정을 사용하는 메서드(예: Format 또는 WriteLine)에 형식 문자열을 사용할 수도 있습니다.

다음 예제에서는 형식이 지정된 숫자의 총 길이가 8자 이상이 되도록 선행 0을 사용하여 여러 정수 값의 형식을 지정합니다.

C#
byte byteValue = 254;
short shortValue = 10342;
int intValue = 1023983;
long lngValue = 6985321;
ulong ulngValue = UInt64.MaxValue;

outputBlock.FontFamily = new System.Windows.Media.FontFamily("Courier New");

// Display integer values by caling the ToString method.
outputBlock.Text += String.Format("{0,22} {1,22}", byteValue.ToString("D8"), byteValue.ToString("X8")) + "\n";
outputBlock.Text += String.Format("{0,22} {1,22}", shortValue.ToString("D8"), shortValue.ToString("X8")) + "\n";
outputBlock.Text += String.Format("{0,22} {1,22}", intValue.ToString("D8"), intValue.ToString("X8")) + "\n";
outputBlock.Text += String.Format("{0,22} {1,22}", lngValue.ToString("D8"), lngValue.ToString("X8")) + "\n";
outputBlock.Text += String.Format("{0,22} {1,22}", ulngValue.ToString("D8"), ulngValue.ToString("X8")) + "\n";
outputBlock.Text += "\n";

// Display the same integer values by using composite formatting.
outputBlock.Text += String.Format("{0,22:D8} {0,22:X8}", byteValue) + "\n";
outputBlock.Text += String.Format("{0,22:D8} {0,22:X8}", shortValue) + "\n";
outputBlock.Text += String.Format("{0,22:D8} {0,22:X8}", intValue) + "\n";
outputBlock.Text += String.Format("{0,22:D8} {0,22:X8}", lngValue) + "\n";
outputBlock.Text += String.Format("{0,22:D8} {0,22:X8}", ulngValue) + "\n";
// The example displays the following output:
//                     00000254               000000FE
//                     00010342               00002866
//                     01023983               000F9FEF
//                     06985321               006A9669
//         18446744073709551615       FFFFFFFFFFFFFFFF
//       
//                     00000254               000000FE
//                     00010342               00002866
//                     01023983               000F9FEF
//                     06985321               006A9669
//         18446744073709551615       FFFFFFFFFFFFFFFF
//         18446744073709551615       FFFFFFFFFFFFFFFF


정수 앞에 특정 개수의 0을 채우려면

  1. 정수 값에서 표시할 선행 0의 개수를 결정합니다.

  2. 정수를 10진수 값으로 표시할지 또는 16진수 값으로 표시할지를 결정합니다. 10진수 값으로 형식을 지정하려면 "D" 표준 형식 지정자를 사용해야 합니다. 16진수 값으로 형식을 지정하려면 "X" 표준 형식 지정자를 사용해야 합니다.

  3. 정수 값의 ToString("D").Length 또는 ToString("X").Length 메서드를 호출하여 채워지지 않은 숫자 문자열의 길이를 확인합니다.

  4. 서식이 지정된 문자열에 포함하려는 선행 0의 개수를 0이 채워지지 않은 숫자 문자열의 길이에 더합니다. 이 값은 0이 채워진 문자열의 총 길이를 정의합니다.

  5. 정수 값의 ToString(String) 메서드를 호출하고 문자열 "Dn"(10진수 문자열의 경우) 및 "Xn"(16진수 문자열의 경우)을 전달합니다. 여기서 n은 0이 채워진 문자열의 총 길이를 나타냅니다. 합성 서식 지정을 지원하는 메서드에 "Dn" 또는 "Xn" 형식 문자열을 사용할 수도 있습니다.

다음 예제에서는 정수 값 앞에 5개의 0을 채웁니다.

C#
int value = 160934;
int decimalLength = value.ToString("D").Length + 5;
int hexLength = value.ToString("X").Length + 5;

outputBlock.FontFamily = new System.Windows.Media.FontFamily("Courier New");

outputBlock.Text += value.ToString("D" + decimalLength.ToString()) + "\n";
outputBlock.Text += value.ToString("X" + hexLength.ToString()) + "\n";
// The example displays the following output:
//       00000160934
//       00000274A6      


특정 길이까지 숫자 값 앞에 0을 채우려면

  1. 숫자의 문자열 표현에 사용할 소수점 왼쪽 자릿수를 결정합니다. 이 전체 자릿수에 선행 0을 포함합니다.

  2. 0 자리 표시자("0")를 사용하여 0의 최소 개수를 나타내는 사용자 지정 숫자 형식 문자열을 정의합니다.

  3. 숫자의 ToString(String) 메서드를 호출하고 사용자 지정 형식 문자열을 전달합니다. 합성 서식 지정을 지원하는 메서드에 사용자 지정 형식 문자열을 사용할 수도 있습니다.

다음 예제에서는 형식이 지정된 숫자의 총 길이에서 소수점 왼쪽 자릿수가 8 이상이 되도록 선행 0을 사용하여 여러 숫자 값의 형식을 지정합니다.

C#
string fmt = "00000000.##";
int intValue = 1053240;
decimal decValue = 103932.52m;
float sngValue = 1549230.10873992f;
double dblValue = 9034521202.93217412;

outputBlock.FontFamily = new System.Windows.Media.FontFamily("Courier New");

// Display the numbers using the ToString method.
outputBlock.Text += intValue.ToString(fmt) + "\n";
outputBlock.Text += decValue.ToString(fmt) + "\n";
outputBlock.Text += sngValue.ToString(fmt) + "\n";
outputBlock.Text += sngValue.ToString(fmt) + "\n";
outputBlock.Text += "\n";

// Display the numbers using composite formatting.
string formatString = " {0,15:" + fmt + "}\n";
outputBlock.Text += String.Format(formatString, intValue);
outputBlock.Text += String.Format(formatString, decValue);
outputBlock.Text += String.Format(formatString, sngValue);
outputBlock.Text += String.Format(formatString, dblValue);
// The example displays the following output:
//       01053240
//       00103932.52
//       01549230
//       01549230
//       
//               01053240
//            00103932.52
//               01549230
//          9034521202.93      


숫자 값 앞에 특정 개수의 0을 채우려면

  1. 숫자 값에 포함할 선행 0의 개수를 결정합니다.

  2. 0이 채워지지 않은 숫자 문자열의 소수점 왼쪽 자릿수를 확인합니다. 이를 위해 다음을 수행합니다.

    1. 숫자의 문자열 표현에 소수점 기호가 포함되어 있는지 여부를 확인합니다.

    2. 소수점 기호가 포함되어 있는 경우 소수점 왼쪽의 문자 수를 확인합니다.

      - 또는 -

      소수점 기호가 포함되어 있지 않은 경우 문자열의 길이를 확인합니다.

  3. 문자열에 표시할 각 선행 0에 대해 0 자리 표시자("0")를 사용하며, 0 자리 표시자나 자릿수 자리 표시자("#")를 사용하여 기본 문자열의 각 자릿수를 나타내는 사용자 지정 형식 문자열을 만듭니다.

  4. 숫자의 ToString(String) 메서드나 합성 서식 지정을 지원하는 메서드에 사용자 지정 형식 문자열을 매개 변수로 제공합니다.

다음 예제에서는 두 개의 Double 값 앞에 5개의 0을 채웁니다.

C#
outputBlock.FontFamily = new System.Windows.Media.FontFamily("Courier New");


double[] dblValues = { 9034521202.93217412, 9034521202 };
foreach (double dblValue in dblValues)
{
   string decSeparator = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
   string fmt, formatString;

   if (dblValue.ToString().Contains(decSeparator))
   {
      int digits = dblValue.ToString().IndexOf(decSeparator);
      fmt = new String('0', 5) + new String('#', digits) + ".##";
   }
   else
   {
      fmt = new String('0', dblValue.ToString().Length);
   }
   formatString = "{0,20:" + fmt + "}\n";

   outputBlock.Text += dblValue.ToString(fmt) + "\n";
   outputBlock.Text += String.Format(formatString, dblValue);
}
// The example displays the following output:
//       000009034521202.93
//         000009034521202.93
//       9034521202
//                 9034521202            

 

728x90

+ Recent posts