[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