类似于VB中IsNumeric的函数应该怎么写?

解决方案 »

  1.   


    在项目中添加Microsoft Visual Basic .NET Runtime的引用,然后就可以在代码中调用VB.NET的函数
    Microsoft.VisualBasic.Information.IsNumeric("123");了if (Microsoft.VisualBasic.Information.IsNumeric("123"))
    {
    Console.Write("true");
    }
      

  2.   

    自己修改一下
    string s=this.textBox1.Text.Trim(); //正则表达式
            string s_reg=@"^\d+$|^\d+\.\d+$";
    if(s!="")
    {
    Regex myr= new Regex(s_reg);
    if(myr.IsMatch(s))
    {
    MessageBox.Show(" OK,输入的是数字!!","error");
    }
    else
    {
                      MessageBox.Show(" sorry,输入的不是数字!!","error");
    }
    }
    else
    {
                 MessageBox.Show(" 对不起,是空的,请输入数据!!","error"); }
      

  3.   

    TO dazhu2(边城浪子【倚天不出,谁与争锋】) 
        怎么这么复杂!有没有简单点的办法?Regex是什么东西?我好象从来没见过,更别说用了TO fancyf(Fancyray
        是个解决方案,不过最好能上纯C#的
      

  4.   

    try
    {
    把TEXT转成数字格式
    }
    catch
    {
    非数字
    }
    这个简单~
      

  5.   

    Match m=Regex.Match(textBox1.Text,@"^[0-9]*$");
    if(!m.Success)
    {
    MessageBox.Show("输入格式不正确!");
    }
    else
    {
    MessageBox.Show("正确");
    }
      

  6.   

    TEXT1中的值肯定是string所以问题就是“判断一个string是否可以转为数字”了http://www.cnblogs.com/hedonister/articles/121430.html一个总结应该能解决你的问题
      

  7.   

    http://www.cnblogs.com/hedonister/articles/121430.html
    嗷嗷得好
      

  8.   

    Regex 是正则表达式
    建议你还是使用正则表达式
      

  9.   

    判断一个string是否可以为数字 
    方案一:Try...Catch(执行效率不高) 
    /// <summary> 
    /// 名称:IsNumberic 
    /// 功能:判断输入的是否是数字 
    /// 参数:string oText:源文本 
    /// 返回值: bool true:是 false:否 
    /// </summary> 
    /// <param name="oText"></param> 
    /// <returns></returns> 
    private bool IsNumberic(string oText) 

    try 
             { 
    int var1=Convert.ToInt32 (oText); 
    return true; 
             } 
    catch 

    return false; 

    } 方案二:正则表达式(推荐) 
    a) 
    using System; 
    using System.Text.RegularExpressions; public bool IsNumber(String strNumber) 

    Regex objNotNumberPattern=new Regex("[^0-9.-]"); 
    Regex objTwoDotPattern=new Regex("[0-9]*[.][0-9]*[.][0-9]*"); 
    Regex objTwoMinusPattern=new Regex("[0-9]*[-][0-9]*[-][0-9]*"); 
    String strValidRealPattern="^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$"; 
    String strValidIntegerPattern="^([-]|[0-9])[0-9]*$"; 
    Regex objNumberPattern =new Regex("(" + strValidRealPattern +")|(" + strValidIntegerPattern + ")"); return !objNotNumberPattern.IsMatch(strNumber) && 
    !objTwoDotPattern.IsMatch(strNumber) && 
    !objTwoMinusPattern.IsMatch(strNumber) && 
    objNumberPattern.IsMatch(strNumber); 
    } b) 
    public static bool IsNumeric(string value) 

    return Regex.IsMatch(value, @"^[+-]?\d*[.]?\d*$"); 

    public static bool IsInt(string value) 

    return Regex.IsMatch(value, @"^[+-]?\d*$"); 

    public static bool IsUnsign(string value) 

    return Regex.IsMatch(value, @"^\d*[.]?\d*$"); 

    方案三:遍历 
    a) 
    public bool isnumeric(string str) 

        char[] ch=new char[str.Length]; 
        ch=str.ToCharArray(); 
        for(int i=0;i<ch.Length;i++) 
        { 
            if(ch[i]<48 || ch[i]>57) 
                return false; 
        } 
        return true; 
    } b) 
    public bool IsInteger(string strIn) { 
    bool bolResult=true; 
    if(strIn=="") { 
    bolResult=false; 

    else { 
    foreach(char Char in strIn) { 
    if(char.IsNumber(Char)) 
    continue; 
    else { 
    bolResult=false; 
    break; 



    return bolResult; 
    } c) 
    public static bool isNumeric(string inString) 

    inString=inString.Trim(); 
    bool haveNumber=false; 
    bool haveDot=false; 
    for(int i=0;i<inString.Length;i++) 

    if (Char.IsNumber(inString[i])) 

    haveNumber=true; 

    else if(inString[i]=='.') 

    if (haveDot) 

    return false; 

    else 

    haveDot=true; 


    else if(i==0) 

    if(inString[i]!='+'&&inString[i]!='-') 

    return false; 


    else 

    return false; 

    if(i>20) 

    return false; 


    return haveNumber; 

    } 方案四:改写vb的IsNumeric源代码(执行效率不高) //主调函数 
    public static bool IsNumeric(object Expression) 

          bool flag1; 
          IConvertible convertible1 = null; 
          if (Expression is IConvertible) 
          { 
                convertible1 = (IConvertible) Expression; 
          } 
          if (convertible1 == null) 
          { 
                if (Expression is char[]) 
                { 
                      Expression = new string((char[]) Expression); 
                } 
                else 
                { 
                      return false; 
                } 
          } 
          TypeCode code1 = convertible1.GetTypeCode(); 
          if ((code1 != TypeCode.String) && (code1 != TypeCode.Char)) 
          { 
                return Utils.IsNumericTypeCode(code1); 
          } 
          string text1 = convertible1.ToString(null); 
          try 
          { 
                long num2; 
                if (!StringType.IsHexOrOctValue(text1, ref num2)) 
                { 
                      double num1; 
                      return DoubleType.TryParse(text1, ref num1); 
                } 
                flag1 = true; 
          } 
          catch (Exception) 
          { 
                flag1 = false; 
          } 
          return flag1; 
    } //子函数 
    // return Utils.IsNumericTypeCode(code1); 
    internal static bool IsNumericTypeCode(TypeCode TypCode) 

          switch (TypCode) 
          { 
                case TypeCode.Boolean: 
                case TypeCode.Byte: 
                case TypeCode.Int16: 
                case TypeCode.Int32: 
                case TypeCode.Int64: 
                case TypeCode.Single: 
                case TypeCode.Double: 
                case TypeCode.Decimal: 
                { 
                      return true; 
                } 
                case TypeCode.Char: 
                case TypeCode.SByte: 
                case TypeCode.UInt16: 
                case TypeCode.UInt32: 
                case TypeCode.UInt64: 
                { 
                      break; 
                } 
          } 
          return false; 

      //----------------- 
    //StringType.IsHexOrOctValue(text1, ref num2)) 
    internal static bool IsHexOrOctValue(string Value, ref long i64Value) 

          int num1; 
          int num2 = Value.Length; 
          while (num1 < num2) 
          { 
                char ch1 = Value[num1]; 
                if (ch1 == '&') 
                { 
                      ch1 = char.ToLower(Value[num1 + 1], CultureInfo.InvariantCulture); 
                      string text1 = StringType.ToHalfwidthNumbers(Value.Substring(num1 + 2)); 
                      if (ch1 == 'h') 
                      { 
                            i64Value = Convert.ToInt64(text1, 0x10); 
                      } 
                      else if (ch1 == 'o') 
                      { 
                            i64Value = Convert.ToInt64(text1, 8); 
                      } 
                      else 
                      { 
                            throw new FormatException(); 
                      } 
                      return true; 
                } 
                if ((ch1 != ' ') && (ch1 != '\u3000')) 
                { 
                      return false; 
                } 
                num1++; 
          } 
          return false; 

    //---------------------------------------------------- 
    // DoubleType.TryParse(text1, ref num1); 
    internal static bool TryParse(string Value, ref double Result) 

          bool flag1; 
          CultureInfo info1 = Utils.GetCultureInfo(); 
          NumberFormatInfo info3 = info1.NumberFormat; 
          NumberFormatInfo info2 = DecimalType.GetNormalizedNumberFormat(info3); 
          Value = StringType.ToHalfwidthNumbers(Value, info1); 
          if (info3 == info2) 
          { 
                return double.TryParse(Value, NumberStyles.Any, info2, out Result); 
          } 
          try 
          { 
                Result = double.Parse(Value, NumberStyles.Any, info2); 
                flag1 = true; 
          } 
          catch (FormatException) 
          { 
                flag1 = double.TryParse(Value, NumberStyles.Any, info3, out Result); 
          } 
          catch (Exception) 
          { 
                flag1 = false; 
          } 
          return flag1; 
    } 方案五: 直接引用vb运行库(执行效率不高) 方法: 首先需要添加Visualbasic.runtime的引用 
     代码中Using Microsoft.visualbasic; 
     程序中用Information.isnumeric("ddddd");