문자열이 숫자 값을 나타내는지 확인하는 방법(C# 프로그래밍 가이드)

문자열이 지정된 숫자 형식의 유효한 표현인지 확인하려면 모든 기본 숫자 형식 및 DateTime, IPAddress 등의 형식에 의해서도 구현되는 정적 TryParse 메서드를 사용합니다. 다음 예제에서는 "108"이 유효한 int인지 확인하는 방법을 보여 줍니다.

int i = 0;
string s = "108";  
bool result = int.TryParse(s, out i); //i now = 108  

문자열이 숫자가 아닌 문자를 포함하거나, 숫자 값이 지정한 특정 형식에 비해 너무 크거나 너무 작은 경우 TryParse는 false를 반환하고 out 매개 변수를 0으로 설정합니다. 그렇지 않으면 true를 반환하고 out 매개 변수를 문자열의 숫자 값으로 설정합니다.

참고 항목

문자열이 숫자만 포함해도 사용하는 TryParse 메서드의 형식에 유효하지 않을 수도 있습니다. 예를 들어 "256"은 byte에 유효한 값이 아니지만 int에는 유효합니다. "98.6"은 int에 유효한 값이 아니지만 유효한 decimal입니다.

예시

다음 예제에서는long, bytedecimal 값의 문자열 표현과 함께 TryParse를 사용하는 방법을 보여 줍니다.


string numString = "1287543"; //"1287543.0" will return false for a long
long number1 = 0;
bool canConvert = long.TryParse(numString, out number1);
if (canConvert == true)
Console.WriteLine("number1 now = {0}", number1);
else
Console.WriteLine("numString is not a valid long");

byte number2 = 0;
numString = "255"; // A value of 256 will return false
canConvert = byte.TryParse(numString, out number2);
if (canConvert == true)
Console.WriteLine("number2 now = {0}", number2);
else
Console.WriteLine("numString is not a valid byte");

decimal number3 = 0;
numString = "27.3"; //"27" is also a valid decimal
canConvert = decimal.TryParse(numString, out number3);
if (canConvert == true)
Console.WriteLine("number3 now = {0}", number3);
else
Console.WriteLine("number3 is not a valid decimal");

강력한 프로그래밍

또한 기본 숫자 형식은 문자열이 유효한 숫자가 아닌 경우 예외를 throw하는 Parse 정적 메서드를 구현합니다. 일반적으로 숫자가 유효하지 않은 경우 단순히 false를 반환하는 TryParse가 더 효율적입니다.

.NET 보안

항상 TryParse 또는 Parse 메서드를 사용하여 텍스트 상자, 콤보 상자 등의 컨트롤에서 들어오는 사용자 입력의 유효성을 검사합니다.

참고 항목