收藏 分享(赏)

C#判断是否为数字.doc

上传人:hwpkd79526 文档编号:9294638 上传时间:2019-08-01 格式:DOC 页数:20 大小:47KB
下载 相关 举报
C#判断是否为数字.doc_第1页
第1页 / 共20页
C#判断是否为数字.doc_第2页
第2页 / 共20页
C#判断是否为数字.doc_第3页
第3页 / 共20页
C#判断是否为数字.doc_第4页
第4页 / 共20页
C#判断是否为数字.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、C#判断是否为数字C#判断一个 string是否可以为数字,五种解决方案判断一个 string是否可以为数字方案一:Try.Catch(执行效率不高)/ / 名称:IsNumberic/ 功能:判断输入的是否是数字/ 参数:string oText:源文本/ 返回值: bool true:是 false:否/ / / private bool IsNumberic(string oText)tryint var1=Convert.ToInt32 (oText);return true;catchreturn false;方案二:正则表达式(推荐)a)using System;using Sys

2、tem.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=“(

3、-|0-9)0-9*$“;Regex objNumberPattern =new Regex(“(“ + strValidRealPattern +“)|(“ + strValidIntegerPattern + “)“);return !objNotNumberPattern.IsMatch(strNumber) b)public static bool IsNumeric(string value)return Regex.IsMatch(value, “+-?d*.?d*$“);public static bool IsInt(string value)return Regex.IsMa

4、tch(value, “+-?d*$“);public static bool IsUnsign(string value)return Regex.IsMatch(value, “d*.?d*$“);方案三:遍历a)public bool isnumeric(string str)char ch=new charstr.Length;ch=str.ToCharArray();for(int i=0;i if(chi57)return false;return true;b)public bool IsInteger(string strIn) bool bolResult=true;if(s

5、trIn=“) 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;iif (Char.IsNumber(inStringi)haveNumber=tru

6、e;else if(inStringi=.)if (haveDot)return false;elsehaveDot=true;else if(i=0)if(inStringi!=+elsereturn false;if(i20)return false;return haveNumber;方案四:改写 vb的 IsNumeric源代码(执行效率不高)/主调函数public static bool IsNumeric(object Expression)bool flag1;IConvertible convertible1 = null;if (Expression is IConverti

7、ble)convertible1 = (IConvertible) Expression;if (convertible1 = null)if (Expression is char)Expression = new string(char) Expression);elsereturn false;TypeCode code1 = convertible1.GetTypeCode();if (code1 != TypeCode.String) string text1 = convertible1.ToString(null);trylong num2;if (!StringType.IsH

8、exOrOctValue(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:c

9、ase 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 num

10、2)internal static bool IsHexOrOctValue(string Value, ref long i64Value)int num1;int num2 = Value.Length;while (num1 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 b

11、olResult=false;break;return bolResult;c)public static bool isNumeric(string inString)inString=inString.Trim();bool haveNumber=false;bool haveDot=false;for(int i=0;iif (Char.IsNumber(inStringi)haveNumber=true;else if(inStringi=.)if (haveDot)return false;elsehaveDot=true;else if(i=0)if(inStringi!=+els

12、ereturn false;if(i20)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)Ex

13、pression = new string(char) Expression);elsereturn false;TypeCode code1 = convertible1.GetTypeCode();if (code1 != TypeCode.String) string text1 = convertible1.ToString(null);trylong num2;if (!StringType.IsHexOrOctValue(text1, ref num2)double num1;return DoubleType.TryParse(text1, ref num1);flag1 = t

14、rue;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.

15、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 = Val

16、ue.Length;while (num1 num2)char ch1 = Valuenum1;if (ch1 = 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);elsethrow new FormatException();return true;if (ch1 != ) num1+;re

17、turn 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

18、.ToHalfwidthNumbers(Value, info1);if (info3 = info2)return double.TryParse(Value, NumberStyles.Any, info2, out Result);tryResult = 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“);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报