C# 判斷是否為數字

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

在VB有 IsNumeric函數來判斷字串是否為數字,但在C#確沒有,這有點美中不足,不過還是可以自己寫邏輯來判斷。
常使用的方法,記下來先~

引用VB,這樣也行,對於會VB的捧油們是一大福音
    //將Microsoft.VisualBasic加入參考
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.VisualBasic;引用命名空間
    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e)
            {  
                Boolean b=Information.IsNumeric("ddddd");
                MessageBox.Show(b.ToString());
         }
        }
    }

 利用TryParse方法

    private void button2_Click(object sender, EventArgs e)
    {
        int n;
        if (int.TryParse(textBox1.Text, out n))
        {
            MessageBox.Show("數字");
        }
        else
        {
            MessageBox.Show("非數字");
        }
    }

 利用迴圈一個字元一個字元分析

    private bool isNumber(string s)
    {
        int Flag = 0;
        char[] str = s.ToCharArray();
        for (int i = 0; i < str.Length; i++)
        {
            if (Char.IsNumber(str[i]))
            {
                Flag++;
            }
            else
            {
              Flag = -1;
              break;
            }
        }
    
        if ( Flag > 0 )
        {
         return true;
        }
        else
        {
         return false;
        }
    }

 利用正則表達式

    using System.Text.RegularExpressions;//導入命名空間(正則表達式)
            private void button1_Click(object sender, EventArgs e)
            {
                Boolean isN = IsNumeric(textBox1.Text);
                MessageBox.Show(isN.ToString(), "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
    
            //定義一個函數,作用:判斷strNumber是否為數字,是數字返回True,不是數字返回False
            public bool IsNumeric(String strNumber)
            {
                Regex NumberPattern=new Regex("[^0-9.-]");
                return !NumberPattern.IsMatch(strNumber);
            }

幾個正則表達式的例子:

    "^\\d+$"  //非負整數(正整數 + 0)
    "^[0-9]*[1-9][0-9]*$"  //正整數
    "^((-\\d+)|(0+))$"  //非正整數(負整數 + 0)
    "^-[0-9]*[1-9][0-9]*$"  //負整數
    "^-?\\d+$"    //整數
    "^\\d+(\\.\\d+)?$"  //非負浮點數(正浮點數 + 0)
    "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$" 
    //正浮點數
    "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮點數(負浮點數 + 0)
    "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" 
    //負浮點數
    "^(-?\\d+)(\\.\\d+)?$"  //浮點數
    "^[A-Za-z]+$"  //由26個英文字母組成的字符串
    "^[A-Z]+$"  //由26個英文字母的大寫組成的字符串
    "^[a-z]+$"  //由26個英文字母的小寫組成的字符串
    "^[A-Za-z0-9]+$"  //由數字和26個英文字母組成的字符串
    "^\\w+$"  //由數字、26個英文字母或者下劃線組成的字符串
    "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址
    "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url
posted @ 2013-03-07 08:40  日光之下无新事  阅读(695)  评论(0)    收藏  举报