.Net Compact Framework 2.0を使用すると、整数を検証するにはどうすればよいですか(Int32.TryParse
はCompact Frameworkではサポートされていません)。c#integer validation compactframework
答えて
数字が文字列の場合は、文字列char配列を取得し、すべての文字に対してChar.IsNumber
がtrueであるかどうかを確認することができます。
負の数が必要な場合は、最初の文字が ' - 'であることを確認し、範囲を超える数値(int最小/最大値)から保護するtry/catchブロックを追加します。 min/maxに近い数値を扱う必要がない場合は、最大長(多分6〜7桁)を設定し、代わりにstring.Length
を単にチェックすることを検討してください。
偶然に遭遇する可能性があるのは、有効なint
であり、無効な操作がまれである場合は、単純なtry/catchブロックを使用する可能性があります(私のコメントは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. c#integer validationRule unit test
- 2. Read()integer in c
- 3. C#Base64 Validation
- 4. c#regex url validation
- 5. C#ssl request - certifcate validation
- 6. authlogic validation
- 7. while char.TryParse character validation
- 8. Page Validation
- 9. to_tsquery()validation
- 10. @RequestParam validation
- 11. ajax validation
- 12. jquery validation
- 13. MVC3 Searchbox Validation
- 14. xs:any wrapper xml schema validation
- 15. String.Format()split integer value
- 16. SELECT INTO INTEGER ARRAY
- 17. Android save Integer HashSet
- 18. Datetime to Integer
- 19. Argv - String into Integer
- 20. Frege Double to Integer
- 21. Java Label Integer
- 22. VBA Integer from Cell
- 23. ios charts integer convert
- 24. jquery-validation missing dist folder
http://stackoverflow.com/questions/363158/net-compact-framework-tips-tricks-and-gotchas – bevacqua