출처: 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을 채우려면
-
정수 값에서 표시할 자릿수를 결정합니다. 이 수에 선행 자릿수를 포함합니다.
-
정수를 10진수 값으로 표시할지 또는 16진수 값으로 표시할지를 결정합니다.
-
정수를 10진수 값으로 표시하려면 ToString(String) 메서드를 호출하고 문자열 "Dn"을 format 매개 변수의 값으로 전달합니다. 여기서 n은 최소 문자열 길이를 나타냅니다.
-
정수를 16진수 값으로 표시하려면 ToString(String) 메서드를 호출하고 문자열 "Xn"을 format 매개 변수의 값으로 전달합니다. 여기서 n은 최소 문자열 길이를 나타냅니다.
합성 서식 지정을 사용하는 메서드(예: Format 또는 WriteLine)에 형식 문자열을 사용할 수도 있습니다.
-
다음 예제에서는 형식이 지정된 숫자의 총 길이가 8자 이상이 되도록 선행 0을 사용하여 여러 정수 값의 형식을 지정합니다.
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을 채우려면
-
정수 값에서 표시할 선행 0의 개수를 결정합니다.
-
정수를 10진수 값으로 표시할지 또는 16진수 값으로 표시할지를 결정합니다. 10진수 값으로 형식을 지정하려면 "D" 표준 형식 지정자를 사용해야 합니다. 16진수 값으로 형식을 지정하려면 "X" 표준 형식 지정자를 사용해야 합니다.
-
정수 값의 ToString("D").Length 또는 ToString("X").Length 메서드를 호출하여 채워지지 않은 숫자 문자열의 길이를 확인합니다.
-
서식이 지정된 문자열에 포함하려는 선행 0의 개수를 0이 채워지지 않은 숫자 문자열의 길이에 더합니다. 이 값은 0이 채워진 문자열의 총 길이를 정의합니다.
-
정수 값의 ToString(String) 메서드를 호출하고 문자열 "Dn"(10진수 문자열의 경우) 및 "Xn"(16진수 문자열의 경우)을 전달합니다. 여기서 n은 0이 채워진 문자열의 총 길이를 나타냅니다. 합성 서식 지정을 지원하는 메서드에 "Dn" 또는 "Xn" 형식 문자열을 사용할 수도 있습니다.
다음 예제에서는 정수 값 앞에 5개의 0을 채웁니다.
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을 채우려면
-
숫자의 문자열 표현에 사용할 소수점 왼쪽 자릿수를 결정합니다. 이 전체 자릿수에 선행 0을 포함합니다.
-
0 자리 표시자("0")를 사용하여 0의 최소 개수를 나타내는 사용자 지정 숫자 형식 문자열을 정의합니다.
-
숫자의 ToString(String) 메서드를 호출하고 사용자 지정 형식 문자열을 전달합니다. 합성 서식 지정을 지원하는 메서드에 사용자 지정 형식 문자열을 사용할 수도 있습니다.
다음 예제에서는 형식이 지정된 숫자의 총 길이에서 소수점 왼쪽 자릿수가 8 이상이 되도록 선행 0을 사용하여 여러 숫자 값의 형식을 지정합니다.
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을 채우려면
-
숫자 값에 포함할 선행 0의 개수를 결정합니다.
-
0이 채워지지 않은 숫자 문자열의 소수점 왼쪽 자릿수를 확인합니다. 이를 위해 다음을 수행합니다.
-
숫자의 문자열 표현에 소수점 기호가 포함되어 있는지 여부를 확인합니다.
-
소수점 기호가 포함되어 있는 경우 소수점 왼쪽의 문자 수를 확인합니다.
- 또는 -
소수점 기호가 포함되어 있지 않은 경우 문자열의 길이를 확인합니다.
-
-
문자열에 표시할 각 선행 0에 대해 0 자리 표시자("0")를 사용하며, 0 자리 표시자나 자릿수 자리 표시자("#")를 사용하여 기본 문자열의 각 자릿수를 나타내는 사용자 지정 형식 문자열을 만듭니다.
-
숫자의 ToString(String) 메서드나 합성 서식 지정을 지원하는 메서드에 사용자 지정 형식 문자열을 매개 변수로 제공합니다.
다음 예제에서는 두 개의 Double 값 앞에 5개의 0을 채웁니다.
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
'C#' 카테고리의 다른 글
읽기 전용 필드에 바인딩된 datagridview (0) | 2014.06.29 |
---|---|
c# datagridview change current selected row (0) | 2014.06.28 |
c# numericupdown valuechanged 문제 (0) | 2014.06.28 |
c# datagridview selectedrows (0) | 2014.06.28 |
c# datagridview에서 버튼 클릭 이벤트 (0) | 2014.06.28 |