[C#] 判斷是否為數字

  • 113357
  • 0
  • C#
  • 2008-11-30

[C#] 判斷是否為數字

在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 

範例下載:C# 判斷是否為數字.rar

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo