对于.NET平台的WinForm程序来说,好多情况下都会遇到判断输入的字符是否是数值的情况.碰到类似的问题,一般有这样几种解决方式:
1 使用char关键字的IsNumber()方法获取输入子符串的每一位字符,通过调用char关键字的IsNumber()方法分别判断是否是数字来达到目的,但是这种方法一旦遇到带小数点的数值型变量就必须要加入判断的逻辑代码来处理小数点带来的问题.非常麻烦.
2 使用 try { }关键字捕获日常
利用数值型的变量可以执行加减运算这个特性,在一个try{}里面强行把该输入的变量转换成一个数值型变量,如果是数值型就能正常地转换,如果不是转换的时候会发生错误,系统就会捕捉这个错误,从而我们可以获知输入是否是数值型.
3 使用所有数值型关键字的TryParse()方法
凡是数值型的关键字,例如int, float都有TryParse()方法,调用该方法的时候它会尝试着去转换,如果能转换的话就转换成数值型,并给调用该方法的地方返回一个布尔值true,当不能转换的时候给调用该方法的地方返回一个布尔值false.
4使用正则表达式
学习C#语言的时候很少会提到正则表达式,但是事实上.Net FrameWork确实也给我们提供了这样一个类来共我们实现某些类型判断的功能.
该类存在于System.Text.RegularExpressions命名空间下.
可以使用Regex类的 IsMatch方法来判断输入的字符串是否符合相应的条件,当然这里所说的条件是指正则表达式.以下是经常使用的正则表达式:
^[1-9]\d*$ //匹配正整数
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0正则匹配正整数)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0正则匹配正整数)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
在上面我们使用了Regex类的 IsMatch方法来判断输入的字符串.其实对于c#中的正则表达式来说不光只有这一个方法,好包括其他的静态方法:
Escape: 对字符串中的regex中的转义符进行转义;
Match: 返回Match的实例;
Match: 返回Match的实例;
Matches: 返回一系列的Match的方法;
Replace: 用替换字符串替换匹配的表达式;
Split: 返回一系列由表达式决定的字符串;
Unescape:不对字符串中的转义字符转义;
Replace: 用替换字符串替换匹配的表达式;
Split: 返回一系列由表达式决定的字符串;
Unescape:不对字符串中的转义字符转义;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论