使用.Net Compact Framework 2.0,如何驗證整數(Compact Framework不支持Int32.TryParse
)?c#整數驗證compactframework
回答
如果你的數字是一個字符串,你可能會得到字符串字符數組,並檢查每個字符是否爲Char.IsNumber
。
檢查第一個字符是否爲' - '以允許負數,如果您需要它們並添加try/catch塊來防止數字超過範圍(int min/max值)。如果您不必處理接近最小/最大值的數字,請考慮設置最大長度(可能是6-7位數字),然後只需檢查string.Length
。
如果你遇到的唯一有效的int
s和無效的機會是罕見的無效操作,你可以堅持一個簡單的try/catch塊(請參閱我對ctackes答案的評論)。
你是什麼意思的「驗證」?你的意思是解析沒有投擲?
static bool TryParse(string s, out int value)
{
try
{
value = int.Parse(s);
return true;
}
catch
{
value = 0;
return false;
}
}
這也有它的警告。如果有足夠的非int字符串,則可能會出現性能問題,因爲異常提升非常昂貴。我曾經使用過類似的模式,在某些情況下會減慢整個用戶界面。 – 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++
- 2. 在C中驗證整數
- 3. 驗證整數
- 4. 驗證整數
- 5. 驗證整數
- 6. 驗證整數
- 7. 驗證whitepsace分開的整數C++
- 8. C + + std :: regex驗證整數不正確
- 9. 驗證正整數
- 10. JTextField整數驗證
- 11. PHP驗證整數
- 12. ctypevalidator整數驗證數組
- 13. CompactFramework 6.5休眠
- 14. UPNP和.NET CompactFramework
- 15. 整數驗證爲int
- 16. Java - Apache POI整數驗證
- 17. 驗證整個數字
- 18. 使用JSR303驗證整數
- 19. 驗證輸入整數
- 20. 整數驗證工作不
- 21. 的WebAPI整數驗證
- 22. 持續驗證整數
- 23. 驗證整數中的值...?
- 24. 如何驗證整數? VB.Net
- 25. 驗證輸入整數
- 26. 整數驗證輸出
- 27. Extjs:整數的驗證
- 28. Java整數輸入驗證
- 29. Laravel驗證整數,但獲取驗證錯誤必須是整數
- 30. 驗證Haskell中的多位數整數
http://stackoverflow.com/questions/363158/net-compact-framework-tips-tricks-and-gotchas – bevacqua