.Net Compact Framework 2.0을 사용하면 정수 (Int32.TryParse
은 Compact Framework에서 지원되지 않습니다)의 유효성을 검사하는 방법은 무엇입니까?정수 유효성 검사 압축 프레임
답변
숫자가 문자열 인 경우 문자열 char 배열을 가져올 수 있으며 모든 문자에 대해 Char.IsNumber
이 true인지 확인하십시오.
음수가 필요할 경우 첫 번째 문자가 '-'인지 확인하고 범위를 초과하는 숫자 (int/max/최대 값)를 보호하기 위해 try/catch 블록을 추가하십시오. 최소/최대에 근접한 숫자를 다룰 필요가없는 경우 최대 길이 (아마 6-7 자리)를 설정하고 간단히 string.Length
을 확인하십시오.
유효한 경우에만 int
이 발생하고 잘못된 동작이 드문 경우는 드물지만 잘못된 시도 일 수 있습니다 (내 의견은 ctackes 답변 참조).
"유효성 검사"란 무엇을 의미합니까? 던지지 않고 구문 분석한다는 의미입니까?
static bool TryParse(string s, out int value)
{
try
{
value = int.Parse(s);
return true;
}
catch
{
value = 0;
return false;
}
}
이것 역시주의해야합니다. 비 int 문자열이 충분하다면 예외 발생이 상당히 비싸기 때문에 성능 문제가 발생할 수 있습니다. 한때 유사한 패턴을 사용하여 특정 상황에서 UI 전체를 느리게 만들었습니다. – Zebi
public static bool IsInt(string s) {
bool isInt = true;
for (int i = 0; i < s.Length; i++) {
if (!char.IsDigit(s[i])) {
isInt = false;
break;
}
}
return isInt;
}
예 :
string int32s = "10240";
bool isInt = IsInt(int32s); // resolves true
또는 :
string int32s = "1024a";
bool isInt = IsInt(int32s); // resolves false
static bool TryParseImpl(string s, int start, ref int value)
{
if (start == s.Length) return false;
unchecked {
int i = start;
do {
int newvalue = value * 10 + '0' - s[i++];
if (value != newvalue/10) { value = 0; return false; } // detect non-digits and overflow all at once
value = newvalue;
} while (i < s.Length);
if (start == 0) {
if (value == int.MinValue) { value = 0; return false; }
value = -value;
}
}
return true;
}
static bool TryParse(string s, out int value)
{
value = 0;
if (s == null) return false;
s = s.Trim();
if (s.Length == 0) return false;
return TryParseImpl(s, (s[0] == '-')? 1: 0, ref value);
}
가 동일했다 문제. 이 시도 :
static bool numParser(string s)
{
foreach (char c in s)
if (!char.IsNumber(c))
return false;
return true;
}
표지판을 고려하지 않았습니다. 또한 IsDigit을 사용하십시오. MSDN에 따르면 : 숫자에는 숫자 이외에 문자, 분수, 첨자, 위 첨자, 로마 숫자, 통화 분자 및 원으로 둘러싸인 숫자가 포함됩니다. –
- 1. try-catch없이 정수 또는 문자열 유효성 검사
- 2. 소수 및 정수 값 유효성 검사
- 3. jquery 유효성 검사 프레임 워크를 사용하여 이름 유효성 검사
- 4. "동적"자바 유효성 검사 프레임 워크?
- 5. Java에서 정수 배열 압축
- 6. .NET에 대한 유효성 검사 프레임 워크가 있습니까?
- 7. C++의 유효성 검사 프레임 워크
- 8. 유효성 검사 프레임 워크 선택 - ASP.NET
- 9. JSF 프레임 워크를 사용한 유효성 검사
- 10. ASP에서 유효성 검사/유효성 검사 유효성 검사 .net MVC 3
- 11. Html.DropDownList 유효성 검사 오류가없는 유효성 검사 오류
- 12. jQuery submitHandler 트리거 유효성 검사 유효성 검사
- 13. 선택할 유효성 검사 프레임 워크는 다음과 같습니다. 봄 유효성 검사 또는 유효성 검사 응용 프로그램 차단 (Enterprise LIbrary 4.0)?
- 14. .net에서 데이터 유효성 검사
- 15. 영구 계층 유효성 검사
- 16. WPF 컨트롤 유효성 검사
- 17. 유효성 검사 자바 스크립트 진수
- 18. 유효성 검사 블록 vs Nhibernate.Validator
- 19. JavaScript 구문 검사 및 압축
- 20. C# UserControl 유효성 검사
- 21. 클라이언트 측의 이미지 유효성 검사
- 22. Grails 클라이언트 측 유효성 검사
- 23. Databind 및 TableViewer 유효성 검사?
- 24. Linq to SQL 유효성 검사
- 25. 클라이언트 및 서버 유효성 검사
- 26. 젠드 프레임 워크 사용자 지정 유효성 검사 클래스 오류 메시지
- 27. MVC 유효성 검사, 다른 JS 프레임 워크와 충돌합니까?
- 28. JSP, 스프링 프레임 워크와 같은 정규 표현식 양식 유효성 검사
- 29. 자바 스크립트 폼 유효성 검사 프레임 워크 : 검토 요청
- 30. oVal 유효성 검사 프레임 워크에서 스프링 주입을 얻는 방법?
http://stackoverflow.com/questions/363158/net-compact-framework-tips-tricks-and-gotchas – bevacqua