• 是否是数字


    C#判断一个string是否为数字

     

    案一:Try...Catch(执行效率不高) private bool IsNumberic(string oText) {           try          {                   int var1=Convert.ToInt32 (oText);                   return true;          }           catch          {                   return false;          } }

    方案二:正则表达式(推荐) a) 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*$"); }

     public static bool isTel(string strInput) {         return Regex.IsMatch(strInput, @"d{3}-d{8}|d{4}-d{7}"); }

    b)

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

    方案三:遍历 a) public bool isnumeric(string str) {     char[] ch=new char[str.Length];     ch=str.ToCharArray();     for(int i=0;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        {                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; }

  • 相关阅读:
    Linux 函数库
    Linux yum源码包安装和卸载
    Linux软件包管理 RMP包
    Linux软件包管理 RMP包管理
    Linux基本命令 vim命令(二)
    Linux基本命令 vim命令(一)
    Linux基本命令 关机命令
    【后缀表达式求解】No.3.栈-evaluate-reverse-polish-notation题解(Java版)
    对象输入输出流ObjectInputStream、ObjectOutputStream(对象的序列化与反序列化)
    手写二叉树-先序构造(泛型)-层序遍历(Java版)
  • 原文地址:https://www.cnblogs.com/qiu18359243869/p/10585251.html
Copyright © 2020-2023  润新知