源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#判断一个String是否为数字类型

  • 时间:2021-02-06 14:47 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#判断一个String是否为数字类型
[b]方案一:Try...Catch(执行效率不高)[/b]
[u]复制代码[/u] 代码如下:
private bool IsNumberic(string oText) {     try     {         int var1=Convert.ToInt32 (oText);         return true;     }     catch     {         return false;     } }
[b]方案二:正则表达式(推荐)[/b] [b]a)[/b]
[u]复制代码[/u] 代码如下:
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*$"); }
[b]b)[/b]
[u]复制代码[/u] 代码如下:
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]方案三:遍历[/b] [b]a)[/b]
[u]复制代码[/u] 代码如下:
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]b)[/b]
[u]复制代码[/u] 代码如下:
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; }
[b]c)[/b]
[u]复制代码[/u] 代码如下:
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; }
[b]方案四:改写vb的IsNumeric源代码(执行效率不高)[/b]
[u]复制代码[/u] 代码如下:
//主调函数 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; }
[b]方案五:直接引用vb运行库(执行效率不高)[/b] 方法:首先需要添加Visualbasic.runtime的引用 代码中Using Microsoft.visualbasic; 程序中用Information.isnumeric("ddddd"); 以上就是C#判断一个String是否为数字类型的全部内容,推荐大家使用正则表达式的方法,比较简单且效率高。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部