c#整数验证compactframework

时间:2011-07-03 16:12:17

标签: c# compact-framework

使用.Net Compact Framework 2.0,如何验证整数(Compact Framework不支持Int32.TryParse)?

5 个答案:

答案 0 :(得分:3)

“验证”是什么意思?你的意思是没有扔的解析吗?

static bool TryParse(string s, out int value)        
{
    try
    {
        value = int.Parse(s);
        return true;
    }
    catch
    {
        value = 0;
        return false;
    }
}

答案 1 :(得分:3)

  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);
  }

演示:http://ideone.com/PravA

答案 2 :(得分:2)

有同样的问题。试试这个:

static bool numParser(string s)
{
  foreach (char c in s)
    if (!char.IsNumber(c))
      return false;
  return true;
}

答案 3 :(得分:1)

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

答案 4 :(得分:0)

如果您的数字是一个字符串,您可以获取字符串char数组并检查每个字符是否为Char.IsNumber

检查第一个字符是否为' - '以允许负数,如果需要,并添加try / catch块以防止超出范围的数字(int min / max value)。如果您不必处理接近最小/最大的数字,请考虑设置最大长度(可能是6-7位数),然后只需检查string.Length

如果你只遇到有效int和无效的机会是罕见的无效操作,你可能会坚持使用一个简单的try / catch块(参见我对ctackes答案的评论)。