숫자 문자열 구문 분석

업데이트: 2007년 11월

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

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

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

Dim MyString As String = "12345"
Dim MyInt As Integer = Integer.Parse(MyString)
MyInt += 1
Console.WriteLine(MyInt)
' The result is "12346".
string MyString = "12345";
int MyInt = int.Parse(MyString);
MyInt++;
Console.WriteLine(MyInt); 
// The result is "12346". 

NumberStyles 열거형은 구문 분석할 문자열의 허용된 형식을 나타냅니다. 이 열거형을 사용하면 통화 기호, 소수점, 지수, 괄호 등이 들어 있는 문자열을 구문 분석할 수 있습니다. 예를 들어, en-US 문화권에서는 NumberStyles.AllowThousands 열거형이 전달되지 않은 경우 Parse 메서드를 사용하여 쉼표가 들어 있는 문자열을 정수 값으로 변환할 수 없습니다.

NumberStyles.AllowCurrencySymbol은 숫자가 10진수 대신 통화로 구문 분석되도록 지정합니다. NumberStyles.AllowDecimalPoint는 소수점을 사용할 수 있음을 나타냅니다. 유효한 소수점 문자는 현재 NumberFormatInfo 개체의 NumberDecimalSeparator 또는 CurrencyDecimalSeparator 속성에 의해 결정됩니다. NumberStyles.AllowThousands는 그룹 구분 기호를 사용할 수 있음을 나타냅니다. 유효한 그룹 구분 기호 문자는 현재 NumberFormatInfo 개체의 NumberGroupSeparator 또는 CurrencyGroupSeparator 속성에 의해 결정됩니다. 유효한 비숫자 문자 형식의 전체 목록은 NumberStyles 열거형에 대한 설명 부분을 참조하십시오.

NumberStyles 열거형에서는 현재 문화권에 의해 지정된 문자를 사용하여 구문 분석을 보조합니다. 구문 분석할 문자열에 해당하는 문화권으로 설정된 CultureInfo 개체를 전달하는 방법으로 문화권을 지정하지 않으면 현재 스레드와 연결된 문화권이 사용됩니다.

다음 코드 예제는 유효하지 않으므로 예외를 발생시킵니다. 이 예제에서는 비숫자 문자가 들어 있는 문자열을 구문 분석하는 올바르지 않은 방법을 보여 줍니다. 여기에서는 새로운 CultureInfo를 먼저 만든 다음 Parse 메서드에 전달하여 구문 분석에 en-US 문화권이 사용되도록 지정합니다.

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US")
Dim MyString As String = "123,456"
Dim MyInt As Integer = Integer.Parse(MyString, MyCultureInfo)
Console.WriteLine(MyInt)
' Raises System.Format exception.
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("en-US");
string MyString = "123,456";
int MyInt = int.Parse(MyString, MyCultureInfo);
Console.WriteLine(MyInt); 
// Raises System.Format exception.

NumberStyles 열거형을 AllowThousands 플래그와 함께 적용하면 Parse 메서드는 앞의 예제에서 예외를 발생시킨 쉼표를 무시합니다. 다음 코드 예제에서는 앞의 예제와 같은 문자열을 사용하지만 예외는 발생시키지 않습니다. 이 예제에서도 앞의 예제와 마찬가지로 새로운 CultureInfo를 먼저 만든 다음 Parse 메서드에 전달하여 en-US 문화권에서 사용하는 1000 단위 구분 기호가 구문 분석에 사용되도록 지정합니다.

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US")
Dim MyString As String = "123,456"
Dim MyInt As Integer = Integer.Parse(MyString, NumberStyles.AllowThousands, MyCultureInfo)
Console.WriteLine(MyInt)
' The result is "123456".
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("en-US");
string MyString = "123,456";
int MyInt = int.Parse(MyString, NumberStyles.AllowThousands, MyCultureInfo);
Console.WriteLine(MyInt); 
// The result is "123456".

참고 항목

참조

NumberStyles

기타 리소스

문자열 구문 분석

형식 지정

형식 변환