专业编程基础技术教程

网站首页 > 基础教程 正文

C#中判断一个字符串是否是数字的几种方法

ccvgpt 2025-04-06 14:11:52 基础教程 4 ℃

在C#中没有函数可以直接判断一个字符串是不是数字的,于是就有大神们想出来了各种方法,是否好用不做评价,能解决问题就行。

下面使用一个例子来做测试,自写一个isnumber函数,返回true是数字格式,返回false则不是。

C#中判断一个字符串是否是数字的几种方法

string msg=txt_msg.Text.Trim().ToString();
if (isNumber(msg))
{
    MessageBox.Show("数字格式");
}
else 
{
    MessageBox.Show("不是数字格式");
}

强制转换

强制转换就是靠try的出错消息来判断是不是数字,比如你想转换成int,在try中如果能成功转换就不会出错,如果出错了,则说明无法转换成int,简单粗暴,但觉得不好。

public bool isNumber(string msg) 
{
    try
    {
        Convert.ToInt32(msg);
        return true;

    }
    catch (Exception ex)
    {
        return false;
    }
}

我们输入123,返回true,输入123.5,返回false,是因为它只对是不是能转换成整型做了判断,带小数的字符串在转换成整形时会出错,那就修改下代码,看能否转换成带精度的,适应性更好一些。

public bool isNumber(string msg) 
{
    try
    {
        Convert.ToDecimal(msg);
        return true;

    }
    catch (Exception ex)
    {
        return false;
    }
}

修改以后这下就没有问题了。

TryParse方法

不管是int还是decimal,它的tryParse方法都会返回一个bool值,如果是true就转换成功了,这个是相当的简洁。

public bool isNumber(string msg) 
{
    return decimal.TryParse(msg, out decimal num);
}

就是不知道它的原理是怎么实现的

IsDigit方法

这是一个不常用的方法,一般常见于c语言中,它用来判断一个字符是不是十进制的数字,当然对于有小数点的,它会认为不是数字,需要特别的处理一下,在c#中也有char.IsDigit方法,返回一个bool值。

public bool isNumber(string msg) 
{
     bool result = true;
    foreach (char c in msg) 
    {
        if (char.IsDigit(c) || c == '.')
        {

        }
        else 
        {
            return false;
        }
    }
    return result;
}

如果有人输入多个小数点的话,它还是会认为这是一个数字格式。

哪种方法好用还是得看自己的习惯了。

最近发表
标签列表