일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 프록시 예제
- SQLP
- Selenium 환경
- tomcat
- vue
- .NET Core
- .NET Core Proxy
- Vue.config
- 디자인 패턴 사례
- Visual Studio 2015 강제 삭제
- Visual Studio 패키지에 실패했습니다.
- 웹 자동화
- Visual Studio 2015 설치
- spring
- MSSQL 동적 쿼리
- javascript
- Visual Studio 재설치
- Visual Studio 2015 삭제
- 업무 자동화
- 리버스 프록시 예제
- Selenium 설치
- 웹 크롤링
- vue.js
- MSSQL 문자열
- vue3
- Visual Studio 강제 삭제
- Vue3 configureWebpack
- Nginx Reverse Proxy
- Tomcat Error
- Vue configureWebpack
- Today
- Total
금백조의 개발 블로그
[C#]TryParse를 사용한 문자열을 숫자로 변환 및 예외 처리 본문
서론
기존 시스템에서 입력된 object 형식 데이터를 문자열로 변환 후 Convert를 사용하여 숫자로 변환하는 로직이 있었습니다. 그런데 try catch 문으로 예외처리를 하지 않아 잘못 입력된 데이터가 있을 경우 에러가 발생했습니다. 이 문제를 해결하기 위하여 try catch 문을 사용하지 않고 코드를 좀 더 깔끔하게 작성하기 위해 TryParse문을 사용했습니다. 이 과정 속에서 알게 된 TryParse의 특징과 사용법을 예제를 통해 정리해보겠습니다.
본론
[구문 형식]
[숫자 형식].TryParse(string [변환할 문자열],out [매개변수])
[특징]
1. 숫자 형식(decimal, int, double 등...)에 있는 내장 함수입니다.
2. 문자열 변환에 성공할 경우 true, 실패할 경우 false를 반환합니다.
3. out 매개변수에 변환된 숫자가 리턴됩니다.
4. 반환 값을 통해 try catch 문 없이 예외(FormatException, OverflowException 등..)에 대응할 수 있습니다.
[주의사항]
문자열 변환에 실패할 경우 out 매개변수에 0이 할당됩니다.
[예제]
//문자열을 숫자로 변환 예제
//실행 환경 : .NET Framework 4.7.2
string str1 = "100000";//숫자 문자열
string str2 = "10 0000";//숫자 중간에 공백 포함된 숫자 문자열(FormatException 발생)
string str3 = "ABCDE";//숫자가 아닌 문자열
string str4 = "999999999999999999999";//int 숫자형식에 OverflowException이 발생하는 숫자 문자열
string str5 = "ABCDE";//숫자가 아닌 문자열
decimal numResult1 = 0;
decimal numResult2 = 0;
decimal numResult3 = 0;
int numResult4 = 0;//OverflowException을 발생시키기 위해 int로 선언
decimal numResult5 = 1234567890;//변환에 실패했을 경우 리턴값 확인 위한 변수 선언
numResult1 = (decimal.TryParse(str1, out numResult1)) ? numResult1 : -1;//숫자로 변환 성공 > 100000
numResult2 = (decimal.TryParse(str2, out numResult2)) ? numResult2 : -1;//공백이 포함되었으므로 변환 불가능 > -1
numResult3 = (decimal.TryParse(str3, out numResult3)) ? numResult3 : -1;//숫자가 아닌 문자열이므로 변환 불가능 > -1
numResult4 = (int.TryParse(str4, out numResult4)) ? numResult4 : -1;//OverflowException 발생하므로 변환 불가능 > -1
decimal.TryParse(str5, out numResult5);//변환에 실패했을 경우 0이 할당됨.
Console.WriteLine(string.Format("str1 TryParse Result : {0}", numResult1));//100000 출력
Console.WriteLine(string.Format("str2 TryParse Result : {0}", numResult2));//-1 출력
Console.WriteLine(string.Format("str3 TryParse Result : {0}", numResult3));//-1 출력
Console.WriteLine(string.Format("str4 TryParse Result : {0}", numResult4));//-1 출력
Console.WriteLine(string.Format("str5 TryParse Result : {0}", numResult5));//0 출력
결론
오늘은 C#에서 TryParse를 사용하여 문자열을 숫자로 변환하는 방법을 알아보았습니다. 이번 일을 계기로 기존 또는 신규 시스템에서 좀 더 예외로 인해 발생할 수 있는 문제를 항상 인지하면서 사전에 방지하도록 노력해야겠습니다.
Reference
[문자열을 숫자로 변환하는 방법(C# 프로그래밍 가이드)]
docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/types/how-to-convert-a-string-to-a-number
문자열을 숫자로 변환하는 방법 - C# 프로그래밍 가이드
C#에서 Parse, TryParse 또는 Convert 클래스 메서드를 호출하여 문자열을 숫자로 변환하는 방법을 알아봅니다.
docs.microsoft.com