문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

숫자 문자열 구문 분석

모든 숫자 형식에는 숫자의 문자열 표현을 숫자 값으로 바꿀 수 있는 정적 Parse 메서드가 있습니다. 이러한 메서드를 사용하면 표준 숫자 서식 문자열사용자 지정 숫자 형식 문자열에서 다루는 형식 지정자 중 하나를 사용하여 생성된 문자열을 구문 분석할 수 있습니다.

통화 기호를 나타내는 데 사용되는 문자와 1000 단위 구분 기호 및 소수점은 서식 공급자에 의해 정의됩니다. Parse 메서드는 사용자가 문화권 관련 문자열을 지정할 수 있도록 서식 공급자를 허용합니다. 서식 공급자를 지정하지 않으면 현재 스레드 문화권과 연결된 공급자가 사용됩니다. 자세한 내용은 서식 지정 유형을 참조하십시오.

다음 코드 예제에서는 문자열을 정수 값으로 변환하고 해당 값을 증분한 다음 결과를 표시합니다.


string myString = "12345";
try
{
   int myInt = int.Parse(myString);
   myInt++;
   outputBlock.Text += myInt + "\n"; 
}
catch (FormatException)
{
   outputBlock.Text += String.Format("Unable to parse '{0}'.'", 
                                     myString) + "\n";
}
// The example displays the following output: 
//      12346


Parse 메서드 오버로드의 예로는 System.Globalization.NumberStyles 형식의 style 매개 변수가 있습니다. NumberStyles 열거형의 멤버는 공백, 통화 기호 또는 1000 단위 구분 기호 등 구문 분석할 문자열에 나타날 수 있는 요소를 정의합니다. style 매개 변수에서 허용되지 않는 요소가 문자열에 나타나면 구문 분석이 실패합니다. 예를 들어, en-US 문화권의 경우 styleNumberStyles.AllowThousands 플래그가 없으면 Parse 메서드를 사용하여 쉼표가 있는 문자열을 정수 값으로 변환할 수 없습니다. NumberStyles 열거형에서는 다음 스타일을 제공합니다.

모든 숫자 스타일 요소가 나열된 표를 보려면 NumberStyles 열거형 설명서를 참조하십시오.

다음 예제에서는 숫자가 아닌 문자, 이 경우에는 1000 단위 구분 기호를 포함하는 문자열의 구문을 분석하는 잘못된 방법을 설명합니다. 여기에서는 새로운 CultureInfo 개체를 먼저 만든 다음 Int32.Parse(String, IFormatProvider) 메서드에 전달하여 구문 분석에 en-US 문화권이 사용되도록 지정합니다. 1000 단위 구분 기호가 허용되지 않으므로 구문 분석 작업 시 FormatException이 throw됩니다.


using System;
using System.Globalization;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      CultureInfo myCultureInfo = new CultureInfo("en-US");
      string myString = "123,456";
      try
      {
         int myInt = int.Parse(myString, myCultureInfo);
         outputBlock.Text += myInt + "\n"; 
      }
      catch (FormatException)
      {
         outputBlock.Text += String.Format("Unable to parse '{0}'.", 
                                            myString) + "\n";              
      }
   }
}
// The example displays the following output:
//     Unable to parse '123,456'.      


NumberStyles.AllowThousands 플래그를 적용하면 Int32.Parse(String, NumberStyles, IFormatProvider) 메서드 오버로드가 이전 예제에서 예외를 발생시킨 쉼표를 처리합니다. 다음 코드 예제에서는 앞의 예제와 같은 문자열을 사용하지만 예외는 발생시키지 않습니다. 이전 예제에서처럼 새로운 CultureInfo 개체가 먼저 만들어집니다. 이때 만들어진 개체는 Int32.Parse(String, NumberStyles, IFormatProvider) 메서드 오버로드에 전달되어 en-US 문화권에서 사용하는 1000 단위 구분 기호가 입력 문자열에서 허용되도록 지정합니다.


using System;
using System.Globalization;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      CultureInfo myCultureInfo = new CultureInfo("en-US");
      string myString = "123,456";
      try
      {
         int myInt = int.Parse(myString, NumberStyles.AllowThousands, 
                               myCultureInfo);
         outputBlock.Text += myInt + "\n"; 
      }
      catch (FormatException)
      {
         outputBlock.Text += String.Format("Unable to parse '{0}'.", 
                                            myString) + "\n";              
      }
   }
}
// The example displays the following output:
//     123456      


커뮤니티 추가 항목

추가
표시: