利用正则表达式检测用户的输入 :)
2004-06-14 22:25
302 查看
在siko的帖子:c#初学者,望指教 中,他提到了一个问题,
string s = Console.ReadLine();
int a = int.Parse(s);
对于上述代码,怎么很方便的检测输入的为Int型,而且性能不能影响很大.
我在评论中给出的一个方案就是,使用Try catch
int x;
while(true){
try{
x = Int32.Parse(..);
break;
}
catch(Exception ex){
Console.WriteLine(...);
}
}
但是dudu发现,这样做很影响性能.而性能的影响都是由于转换不成功,Throw 的Exception引起的.(由sumtec解释)
而且sumtec也提出了一种解决方案:
s = s.Trim();
switch (s[0])
{
case '1':
...
break;
case '2':
...
break;
case '3':
...
break;
default:
...
break;
}
或者:
s = s.Trim();
byte b = Encoding.Ascii.GetByte(s[0]);
switch(b - 0x30)
{
case 1:
...
....
}
上述代码应该是可以完成了siko的问题了的.
但是我始终觉得这样做太,,,,厄,怎么说呢,麻烦?还是别的..
反正就是和本来的意图不相同了吧..
其实此问题的主要原因在于,确定用户输入的字符串为0-9的数字,不是字母.
这时,我们就可以通过正则表达式来对输入进行验证:)
代码如下:
string regx = @"^\d+$";
string temp;
Regex reg = new Regex(regx );
while(true){
temp = Console.ReadLine();
Console.WriteLine("input : " + temp);
if( reg.IsMatch(temp) ){
break;
}
}
Console.WriteLine("hehe");
int x = Int32.Parse(temp);
Console.WriteLine(x);
这样,就可以很方便的检测输入的是不是数字了.呵呵...
string s = Console.ReadLine();
int a = int.Parse(s);
对于上述代码,怎么很方便的检测输入的为Int型,而且性能不能影响很大.
我在评论中给出的一个方案就是,使用Try catch
int x;
while(true){
try{
x = Int32.Parse(..);
break;
}
catch(Exception ex){
Console.WriteLine(...);
}
}
但是dudu发现,这样做很影响性能.而性能的影响都是由于转换不成功,Throw 的Exception引起的.(由sumtec解释)
而且sumtec也提出了一种解决方案:
s = s.Trim();
switch (s[0])
{
case '1':
...
break;
case '2':
...
break;
case '3':
...
break;
default:
...
break;
}
或者:
s = s.Trim();
byte b = Encoding.Ascii.GetByte(s[0]);
switch(b - 0x30)
{
case 1:
...
....
}
上述代码应该是可以完成了siko的问题了的.
但是我始终觉得这样做太,,,,厄,怎么说呢,麻烦?还是别的..
反正就是和本来的意图不相同了吧..
其实此问题的主要原因在于,确定用户输入的字符串为0-9的数字,不是字母.
这时,我们就可以通过正则表达式来对输入进行验证:)
代码如下:
string regx = @"^\d+$";
string temp;
Regex reg = new Regex(regx );
while(true){
temp = Console.ReadLine();
Console.WriteLine("input : " + temp);
if( reg.IsMatch(temp) ){
break;
}
}
Console.WriteLine("hehe");
int x = Int32.Parse(temp);
Console.WriteLine(x);
这样,就可以很方便的检测输入的是不是数字了.呵呵...
相关文章推荐
- 正则表达式检测用户输入的email地址是否合法
- 利用正则表达式验证控制文本框的输入字符类型
- javascript 输入内容检测(正则表达式方法)不使用弹出窗口提示方法
- 利用正则表达式, 验证控制文本框的输入字符类型
- 利用jquery正则表达式在页面验证url网址输入是否正确
- 利用正则表达式, 验证控制文本框的输入字符类型
- 利用正则表达式, 验证控制文本框的输入字符类型
- 利用正则表达式限制网页表单里的文本框输入内容小结
- 利用正则表达式, 验证控制文本框的输入字符类型
- 利用正则表达式, 验证控制文本框的输入字符类型
- 利用正则表达式, 验证控制文本框的输入字符类型
- C#结合正则表达式判断各种用户输入合法性
- iput利用正则表达式动态监控数据实现输入金额(限制整数输入位数和两位小数)
- 版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷
- php正则表达式检查用户输入的格式是否正确
- 利用正则表达式限制网页表单里的文本框输入内容小结
- PB关于字符串按照一定输入格式、规则检测(正则表达式)
- javascript 利用正则表达式控制 日期的输入
- 利用正则表达式, 验证控制文本框的输入字符类型
- Android 巧用正则表达式+TextWatcher实时限制用户输入