본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. C#언어 문자열 숫자 변환 방법

C#언어 문자열 숫자 변환 방법

· 댓글개 · 바다야크

C#언어 안전하게 문자열을 숫자로 변환하는 방법

새로운 언어를 학습하게 되면 형 변환이 제일 먼저 궁금해지지 않나 생각합니다. C에서는 atoi() 함수나 sscanf() 함수를 이용해서 숫자 문자열을 숫자 변수로 받는데요, C#에서는 어떻게 할까요? 객체지향 언어답게 메서드 방식으로 변환하는데요, 방법은 이렇습니다.

int nValue = int.Parse( str);

위 코드는 문자열 str의 값을 정수로 변환해서 nValue에 대입합니다. 방법은 쉽습니다만, 안심할 수 없습니다. 왜냐하면 str이 가지고 있는 문자열이 비었거나 숫자 문자열이 아니면 실행 에러가 발생합니다. 실행 에러라는 말씀은 빌드가 되어도 실행 중에 에러가 발생해서 종료가 된다는 것이죠.

이 문제를 해결하려면 C#의 예외 상황 처리 코드를 작성하면 됩니다.

int nValue;
try 
{ 
    nValue = int.Parse( str);
}
catch
{
    nValue = -1; 
}

문자열을 숫자로 바꾸는 곳마다 try...catch...구문을 사용해야 하지만, 안전한 코드를 위해 어쩔 수 없습니다. 델파이처럼 StrToIntDef() 함수가 있으면 참 좋은데 말이죠.

StrToIntDef()처럼 숫자 바꾸기가 안 되면 대신 반환하는 기본값을 정할 수 없지만, try...catch... 예외 상황 구문을 사용하지 않고 문자열을 숫자로 변경할 수 있습니다. Parse() 메서드 대산에 TryParse()를 사용하면 됩니다.

bool TryParse ( str, out int result);

TryParse는 문자열을 숫자로 바꾸면서 성공 여부를 반환하고, 숫자로 변환이 성공하면 두 번째 인자에 대입해 줍니다. 변수 타입 별로 TryParse() 메서드가 제공되어서 정수, 실수로 나누어 변환할 수 있습니다.

bool bOK = int.TryParse( "123", out int nValue);    // bOK == TRUE, nValue == 123
bool bOK = int.TryParse( "123.4", out int nValue);  // bOK == FALSE, nValue == 0
bool bOK = int.TryParse( "abc", out int nValue);    // bOK == FALSE, nValue == 0
bool bOK = int.TryParse( "", out int nValue);       // bOK == FALSE, nValue == 0

실수형 변수 타입을 사용한 예입니다.

bool bOK = float.TryParse( "123", out float nValue);   // bOK == TRUE, nValue == 123.0
bool bOK = float.TryParse( "123.4", out float nValue); // bOK == TRUE, nValue == 123.4
bool bOK = float.TryParse( "abc", out float nValue);   // bOK == FALSE, nValue == 0.0
bool bOK = float.TryParse( "", out float nValue);      // bOK == FALSE, nValue == 0.0

문자열을 숫자로 변환이 실패했을 때 숫자 값이 0 이라는 점도 이용할 수 있습니다.

SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.