이 페이지가 유용했습니까?
이 콘텐츠에 대한 여러분의 의견은 중요합니다. 의견을 알려주십시오.
추가 의견
1500자 남음
내보내기(0) 인쇄
모두 확장
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오.
번역
원본

String.Format 메서드 (IFormatProvider, String, Object[])

지정된 문자열에 있는 서식 지정 항목을 지정된 배열에 있는 해당 개체의 문자열 표현으로 바꿉니다. 지정된 매개 변수에서 문화권별 서식 지정 정보를 제공합니다.

네임스페이스:  System
어셈블리:  mscorlib(mscorlib.dll)

public static string Format(
	IFormatProvider provider,
	string format,
	params Object[] args
)

매개 변수

provider
형식: System.IFormatProvider
문화권별 서식 지정 정보를 제공하는 개체입니다.
format
형식: System.String
복합 형식 문자열입니다(설명 참조).
args
형식: System.Object[]
형식을 지정할 개체를 0개 이상 포함하는 개체 배열입니다.

반환 값

형식: System.String
서식 지정 항목이 args에 있는 해당 개체의 문자열 표현으로 바뀐 format의 복사본입니다.

예외상황
ArgumentNullException

format 또는 argsnull인 경우

FormatException

format이 잘못된 경우

또는

형식 항목의 인덱스가 0보다 작거나 args 배열의 길이보다 크거나 같은 경우

이 메서드는 .NET Framework의 복합 형식 지정 기능을 사용하여 개체 값을 해당 문자열 표현으로 변환하고 이 표현을 문자열에 포함합니다. .NET Framework에서는 광범위한 형식 지정 기능을 지원합니다. 이러한 지원에 대한 자세한 내용은 다음 형식 지정 항목을 참조하십시오.

provider 매개 변수는 형식 지정 프로세스를 적합하게 수행하는 데 사용되는 사용자 지정 정보와 문화권별 정보를 제공합니다. provider 매개 변수는 해당 GetFormat 메서드가 String.Format(IFormatProvider, String, Object[]) 메서드에서 호출되는 IFormatProvider 구현입니다. 이 메서드는 formatType 매개 변수와 동일한 형식의 형식 지정 정보를 제공하는 개체를 반환해야 합니다. provider 매개 변수의 GetFormat 메서드는 args의 특정 개체 형식에 따라 다음과 같이 한 번 이상 호출됩니다.

  • ICustomFormatter 형식을 나타내는 Type 개체는 항상 전달됩니다.

  • 해당하는 데이터 형식이 날짜 및 시간 값인 각 형식 항목에 대한 DateTimeFormatInfo 형식을 나타내는 Type 개체가 전달됩니다.

  • 해당하는 데이터 형식이 숫자인 각 형식 항목에 대한 NumberFormatInfo 형식을 나타내는 Type 개체가 전달됩니다.

자세한 내용은 형식 서식 지정 항목의 형식 공급자 부분을 참조하십시오. 예제 단원에 제공된 예제에서는 숫자 값을 하이픈이 포함된 고객 계정 번호로 출력하는 사용자 지정 형식 공급자를 보여 줍니다.

format 매개 변수는 이 메서드의 매개 변수 목록에 있는 개체에 해당하는 0개 이상의 인덱싱된 자리 표시자(형식 항목이라고 함)와 결합된 0개 이상의 텍스트로 구성됩니다. 형식 지정 프로세스에서는 각 형식 항목을 해당 개체의 값에 대한 문자열 표현으로 바꿉니다.

형식 항목의 구문은 다음과 같습니다.

{index[,length][:formatString]}

대괄호([ 및 ])로 묶인 요소는 선택적입니다. 다음 표에서는 각 요소에 대해 설명합니다. 형식 항목의 구문을 비롯한 합성 형식 지정 기능에 대한 자세한 내용은 합성 형식 지정을 참조하십시오.

요소

설명

인덱스(index)

형식을 지정할 개체의 매개 변수 목록 위치(0부터 시작)입니다. index 위치에 매개 변수가 없는 경우 FormatException이 throw됩니다. index로 지정된 개체가 null이면 형식 항목이 String.Empty로 대체됩니다.

,length

형식을 지정할 개체의 문자열 표현에 포함되는 최소 문자 수입니다. 양수이면 형식을 지정할 개체가 오른쪽에 맞춰지고, 음수이면 왼쪽에 맞춰집니다. length를 지정할 경우 쉼표가 필요합니다.

:formatString

형식을 지정할 개체에서 지원하는 표준 또는 사용자 지정 형식 문자열입니다. formatString의 가능한 값은 해당 개체의 ToString(format) 메서드에서 지원하는 값과 동일합니다. formatString이 지정되어 있지 않고 형식을 지정할 개체가 IFormattable 인터페이스를 구현하는 경우 IFormattable.ToString 형식 문자열로 사용되는 format 매개 변수 값으로 null이 전달됩니다.

참고참고

날짜 및 시간 값과 함께 사용되는 표준 및 사용자 지정 형식 문자열의 경우 표준 날짜 및 시간 서식 문자열사용자 지정 날짜 및 시간 형식 문자열을 참조하십시오. 숫자 값과 함께 사용되는 표준 및 사용자 지정 형식 문자열의 경우 표준 숫자 서식 문자열사용자 지정 숫자 서식 문자열을 참조하십시오. 열거형과 함께 사용되는 표준 형식 문자열의 경우 열거형 형식 문자열을 참조하십시오.

앞과 뒤에 사용하는 중괄호 문자 "{" 및 "}"가 필요합니다. format에서 단일 리터럴 중괄호 문자를 지정하려면 "{{" 또는 "}}"와 같이 중괄호 문자를 두 개 지정합니다.

format의 값이 "Microsoft®.NET (Core Reference)제품을 {0:####}개 구매해 주셔서 감사합니다."이고 arg[0]이 값이 123인 Int16인 경우 반환 값은 다음과 같습니다.

"Microsoft® .NET(Core Reference) 제품을 123개 구매해 주셔서 감사합니다."

format의 값이 "Brad의 개에는 {0,-8:G} 개의 벼룩이 있습니다."이고 arg[0]은 값이 42인 Int16이면 반환 값은 다음과 같습니다. 이 예제에서 밑줄(_)은 안쪽 여백을 나타냅니다.

"Brad의 개에는 42______ 개의 벼룩이 있습니다."

다음 예제에서는 String.Format(IFormatProvider, String, Object[]) 메서드를 사용하여 일부 날짜 및 시간 값과 숫자 값의 문자열 표현을 여러 다른 문화권에 맞게 표시합니다.


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] cultureNames = { "en-US", "fr-FR", "de-DE", "es-ES" };

      DateTime dateToDisplay = new DateTime(2009, 9, 1, 18, 32, 0);
      double value = 9164.32;

      Console.WriteLine("Culture     Date                                Value\n");
      foreach (string cultureName in cultureNames)
      {
         CultureInfo culture = new CultureInfo(cultureName);
         string output = String.Format(culture, "{0,-11} {1,-35:D} {2:N}", 
                                       culture.Name, dateToDisplay, value);
         Console.WriteLine(output);
      }    
   }
}
// The example displays the following output:
//    Culture     Date                                Value
//    
//    en-US       Tuesday, September 01, 2009         9,164.32
//    fr-FR       mardi 1 septembre 2009              9 164,32
//    de-DE       Dienstag, 1. September 2009         9.164,32
//    es-ES       martes, 01 de septiembre de 2009    9.164,32


다음 예제에서는 정수 값의 형식을 x-xxxxx-xx 형태의 고객 계정 번호로 지정하는 사용자 지정 숫자 형식 공급자를 정의합니다.


using System;

public class TestFormatter
{
   public static void Main()
   {
      int acctNumber = 79203159;
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0}", acctNumber));
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0:G}", acctNumber));
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0:S}", acctNumber));
      Console.WriteLine(String.Format(new CustomerFormatter(), "{0:P}", acctNumber));
      try {
         Console.WriteLine(String.Format(new CustomerFormatter(), "{0:X}", acctNumber));
      }
      catch (FormatException e) {
         Console.WriteLine(e.Message);
      }
   }
}

public class CustomerFormatter : IFormatProvider, ICustomFormatter
{
   public object GetFormat(Type formatType) 
   {
      if (formatType == typeof(ICustomFormatter))        
         return this; 
      else
         return null;
   }

   public string Format(string format, 
	                     object arg, 
	                     IFormatProvider formatProvider) 
   {                       
      if (! this.Equals(formatProvider))
      {
         return null;
      }
      else
      {
         if (String.IsNullOrEmpty(format)) 
            format = "G";

         string customerString = arg.ToString();
         if (customerString.Length < 8)
            customerString = customerString.PadLeft(8, '0');

         format = format.ToUpper();
         switch (format)
         {
            case "G":
               return customerString.Substring(0, 1) + "-" +
                                     customerString.Substring(1, 5) + "-" +
                                     customerString.Substring(6);
            case "S":                          
               return customerString.Substring(0, 1) + "/" +
                                     customerString.Substring(1, 5) + "/" +
                                     customerString.Substring(6);
            case "P":                          
               return customerString.Substring(0, 1) + "." +
                                     customerString.Substring(1, 5) + "." +
                                     customerString.Substring(6);
            default:
               throw new FormatException( 
                         String.Format("The '{0}' format specifier is not supported.", format));
         }
      }   
   }
}
// The example displays the following output:
//       7-92031-59
//       7-92031-59
//       7/92031/59
//       7.92031.59
//       The 'X' format specifier is not supported.


.NET Framework

4, 3.5, 3.0, 2.0, 1.1, 1.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

에서 지원

Windows 7, Windows Vista SP1 이상, Windows XP SP3, Windows XP SP2 x64 버전, Windows Server 2008(Server Core는 지원되지 않음), Windows Server 2008 R2(Server Core는 SP1 이상에서 지원됨), Windows Server 2003 SP2

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

커뮤니티 추가 항목

추가
표시:
© 2015 Microsoft