拼搏的人生

          拼搏在繁華的都市

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            7 隨筆 :: 13 文章 :: 6 評論 :: 0 Trackbacks
          方案一: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");
          posted on 2006-07-19 22:11 Dalston.Young 閱讀(336) 評論(0)  編輯  收藏 所屬分類: DotNet

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 军事| 武安市| 桑植县| 衡南县| 娱乐| 临海市| 修武县| 来凤县| 高唐县| 资源县| 固镇县| 霍林郭勒市| 怀集县| 北安市| 图木舒克市| 呼图壁县| 庄河市| 宜宾市| 丹东市| 五华县| 扎囊县| 蓝田县| 汽车| 如东县| 罗山县| 凤山县| 镇宁| 沧州市| 深州市| 台州市| 海兴县| 晋城| 阳泉市| 阿瓦提县| 玛纳斯县| 景东| 宁南县| 临泉县| 富蕴县| 什邡市| 临颍县|