2014年8月5日 星期二

[ASP.NET C#]判斷輸入字串是否為數字

Reference:http://www.dotblogs.com.tw/yc421206/archive/2008/11/20/6029.aspx

在VB有 IsNumeric函數來判斷字串是否為數字,但在C#確沒有,這有點美中不足,不過還是可以自己寫邏輯來判斷。
常使用的方法,記下來先~
引用VB,這樣也行,對於會VB的捧油們是一大福音
01//將Microsoft.VisualBasic加入參考
02using System;
03using System.Collections.Generic;
04using System.ComponentModel;
05using System.Data;
06using System.Drawing;
07using System.Text;
08using System.Windows.Forms;
09using Microsoft.VisualBasic;引用命名空間
10namespace WindowsApplication1
11{
12    public partial class Form1 : Form
13    {
14        public Form1()
15        {
16            InitializeComponent();
17        }
18        private void button1_Click(object sender, EventArgs e)
19        {  
20            Boolean b=Information.IsNumeric("ddddd");
21            MessageBox.Show(b.ToString());
22        }
23    }
24}
 利用TryParse方法
01private void button2_Click(object sender, EventArgs e)
02{
03    int n;
04    if (int.TryParse(textBox1.Text, out n))
05    {
06        MessageBox.Show("數字");
07    }
08    else
09    {
10        MessageBox.Show("非數字");
11    }
12}
 利用迴圈一個字元一個字元分析
01private bool isNumber(string s)
02{
03    int Flag = 0;
04    char[] str = s.ToCharArray();
05    for (int i = 0; i < str.Length; i++)
06    {
07        if (Char.IsNumber(str[i]))
08        {
09            Flag++;
10        }
11        else
12        {
13          Flag = -1;
14          break;
15        }
16    }
17 
18    if ( Flag > 0 )
19    {
20     return true;
21    }
22    else
23    {
24     return false;
25    }
26}
 利用正則表達式
01using System.Text.RegularExpressions;//導入命名空間(正則表達式)
02        private void button1_Click(object sender, EventArgs e)
03        {
04            Boolean isN = IsNumeric(textBox1.Text);
05            MessageBox.Show(isN.ToString(), "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
06        }
07 
08        //定義一個函數,作用:判斷strNumber是否為數字,是數字返回True,不是數字返回False
09        public bool IsNumeric(String strNumber)
10        {
11            Regex NumberPattern=new Regex("[^0-9.-]");
12            return !NumberPattern.IsMatch(strNumber);
13        }
幾個正則表達式的例子: 
01"^\\d+$"  //非負整數(正整數 + 0)
02"^[0-9]*[1-9][0-9]*$"  //正整數
03"^((-\\d+)|(0+))$"  //非正整數(負整數 + 0)
04"^-[0-9]*[1-9][0-9]*$"  //負整數
05"^-?\\d+$"    //整數
06"^\\d+(\\.\\d+)?$"  //非負浮點數(正浮點數 + 0)
07"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$" 
08//正浮點數
09"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮點數(負浮點數 + 0)
10"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" 
11//負浮點數
12"^(-?\\d+)(\\.\\d+)?$"  //浮點數
13"^[A-Za-z]+$"  //由26個英文字母組成的字符串
14"^[A-Z]+$"  //由26個英文字母的大寫組成的字符串
15"^[a-z]+$"  //由26個英文字母的小寫組成的字符串
16"^[A-Za-z0-9]+$"  //由數字和26個英文字母組成的字符串
17"^\\w+$"  //由數字、26個英文字母或者下劃線組成的字符串
18"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址
19"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url

沒有留言:

張貼留言