본문 바로가기
C++ 200제/코딩 IT 정보

C# int를 안전하게 string으로 변환하기 (TryParse)

by vicddory 2018. 8. 24.

C# int를 안전하게 string으로 변환하기 (TryParse)


C#에서 int를 string으로 변환하려면 Int32.Parse를 사용하면 됩니다. 아주 쉽게 변환할 수 있어요. 하지만, 변환할 수 없는 문자열의 경우 여지없이 오류를 발생시킵니다.


그래서 TryParse를 사용하기도 하는데, 이것도 단독으로 사용하기엔 완벽하지 못해요. 왜냐면 리턴값이 0이라 실제로 "00"이란 문자열을 TryParse에 넘기면 0이 리턴되어 변환하지 못한다는 의미가 돼버리기 때문이죠.


그래서 소스를 섞어서 사용해야 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private bool IsParseNumber(object obj)
{
    int parse = -1;
 
    try
    {
        parse = Int32.Parse(obj.ToString());
        return true;
    }
    catch
    {
        Int32.TryParse(obj.ToString(), out parse);
 
        return parse == -1 || parse == 0 ? false : true;
    }
}
cs


일단 어떤 형태로 인자가 넘어올지 모르니 object로 받습니다.


앞서 말씀드렸지만 TryParse는 실패했을 때 리턴값이 0이라 0을 변환할 때 문제가 생겨요. 그래서 7, 8번 라인처럼 try 문 안에서 Parse를 시도합니다.


C# int를 안전하게 string으로 변환하기 (TryParse)[c# int string]


변환에 실패하면 12번 라인으로 이동해요. 이때 TryParse를 사용해 다시 한번 변환합니다. 그리고 결과에 맞춰 변환할 수 있다, 없다를 리턴합니다.


중복 소스 같지만, 문자열 "0000"을 알아내려면 굳이 이 방법을 써야 합니다. TryParse는 다시 말씀드리지만 변환에 실패하면 0을 리턴합니다. 그래서 7, 8번 라인을 통해 변환이 가능한지를 먼저 확인해야 하는 것이죠.


1. Parse로 변환 가능한지 확인.

2. 안되면 TryParse로 변환.

3. TryParse만 사용하면 false 값이 0으로 나와 "0000"이란 문자열을 변환하지 못함.


설명이 좀 뒤죽박죽인데, 아무튼 굳이 이렇게 변환하는 것은 "00000000" 이란 문자열도 변환하기 위함입니다.


C# int를 안전하게 string으로 변환하기 (TryParse)

댓글