C# - 문자열을 Int로 변환, 3가지 방법

string을 32bit의 Int로 변환하는 다양한 방법을 소개합니다.

1. Int32.Parse()를 이용한 방법

Int32.Parse()는 인자로 전달된 문자열을 32bit의 int로 변환합니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            string str = "1234";
            int num = Int32.Parse(str);
            Console.WriteLine(num);
        }
    }
}

Output:

1234

1.1 잘못된 정수의 문자열 변환

아래 예제의 1234a 처럼 정수가 아닌 문자열을 int로 변환하려고 하면 FormatException 에러가 발생합니다.

string str = "1234a";
int num = Int32.Parse(str);
Console.WriteLine(num);

Output:

Unhandled exception. System.FormatException: Input string was not in a correct format.
   at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
   at System.Int32.Parse(String s)

아래와 같이 try-catch를 사용하여 예외를 처리할 수 있습니다. 에러가 발생할 때 num은 0이 기본 값으로 설정되도록 구현할 수 있습니다.

int num;
try {
    string str = "1234a";
    num = Int32.Parse(str);
    Console.WriteLine("Parsed: " + num);
} catch (FormatException) {
    num = 0;
    Console.WriteLine("Failed: " + num);
}

Output:

Failed: 0

2. Int32.TryParse()를 이용한 방법

  • Int32.TryParse(string, out)는 string을 int로 변환하며 out 변수에 저장합니다.
  • 파싱이 성공하면 true를 리턴하며, 실패하면 false를 리턴합니다.
  • Int32.Parse()와 비슷하지만, 예외가 발생하면 out 변수에 기본 값으로 0을 설정하는 예외처리가 적용됩니다.

아래와 같이 변환할 수 있으며, 함수 내부에서 예외처리가 되어있기 때문에 try-catch는 추가하지 않아도 됩니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            string str = "1234";
            int num;
            bool result = Int32.TryParse(str, out num);
            if (result) {
                Console.WriteLine("Parsed: " + num);
            } else {
                Console.WriteLine("Failed: " + num);
            }
        }
    }
}

Output:

Parsed: 1234

만약 아래와 같이 정수가 아닌 1234a를 파싱하면, false가 리턴되며 num에 0이 설정됩니다.

string str = "1234a";
int num;
bool result = Int32.TryParse(str, out num);
if (result) {
    Console.WriteLine("Parsed: " + num);
} else {
    Console.WriteLine("Failed: " + num);
}

Output:

Failed: 0

3. Convert.ToInt32()를 이용한 방법

Convert.ToInt32(string)는 string을 int로 변환합니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int num;
            try {
                string str = "1234";
                num = Convert.ToInt32(str);
                Console.WriteLine("Parsed: " + num);
            } catch (FormatException) {
                num = 0;
                Console.WriteLine("Failed: " + num);
            }
        }
    }
}

Output:

Parsed: 1234
Loading script...
codechachaCopyright ©2019 codechacha