C#判断一个string是否为数字(正则表达式)

C#用正则表达式判断字符串是否纯数字vs用Char.IsDigit 方法遍历字符数组是否纯数字 用于判断字符串是否纯数字的正则表达式可以是:^[0-9]*$,其中,[0-9]*表示匹配零个至多个数字,“*”限定符用于限定指定的字符至少出现0次。实现相同目的的正则表达式还可以是:^\d*$、^\d+$。先用ToCharArray()静态方法把输入的字符串转成字符数组,再对数组遍历并用Char.IsDigit()方法判断数组中是否包含非数字,一旦包含非数字就显示输入的字符不是纯数字。使用正则表达式Regex类的IsMatch方法,可以有效地判断用户输入的信息是否为数字。 阅读详情

 

方案一:Try...Catch(执行效率不高)
private bool IsNumberic(string oText)
{
          try
         {
                  int var1=Convert.ToInt32 (oText);
                  return true;
         }
          catch
         {
                  return false;
         }
}

 

方案二:正则表达式(推荐)
a)
public static bool IsNumeric(string value)
{
         return Regex.IsMatch(value, @"^[+-]?/d*[.]?/d*$");
}
public static bool IsInt(string value)
{
         return Regex.IsMatch(value, @"^[+-]?/d*$");
}
public static bool IsUnsign(string value)
{
         return Regex.IsMatch(value, @"^/d*[.]?/d*$");
}

 

b)

using System;
using System.Text.RegularExpressions;

public bool IsNumber(String strNumber)
{
           Regex objNotNumberPattern=new Regex("[^0-9.-]");
           Regex objTwoDotPattern=new Regex("[0-9]*[.][0-9]*[.][0-9]*");
           Regex objTwoMinusPattern=new Regex("[0-9]*[-][0-9]*[-][0-9]*");
           String strValidRealPattern="^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
           String strValidIntegerPattern="^([-]|[0-9])[0-9]*$";
           Regex objNumberPattern =new Regex("(" + strValidRealPattern +")|(" + strValidIntegerPattern + ")");

           return !objNotNumberPattern.IsMatch(strNumber) &&
                  !objTwoDotPattern.IsMatch(strNumber) &&
                  !objTwoMinusPattern.IsMatch(strNumber) &&
                  objNumberPattern.IsMatch(strNumber);
}

 


方案三:遍历
a)
public bool isnumeric(string str)
{
    char[] ch=new char[str.Length];
    ch=str.ToCharArray();
    for(int i=0;i    {
        if(ch[i]<48 || ch[i]>57)
            return false;
    }
    return true;
}

 

b)
public bool IsInteger(string strIn) {
        bool bolResult=true;
        if(strIn=="") {
               bolResult=false;
        }
        else {
              foreach(char Char in strIn) {
                         if(char.IsNumber(Char))
                                continue;
                         else {
                                 bolResult=false;
                                 break;
                         }
              }
        }
        return bolResult;
}

c)

public static bool isNumeric(string inString)
{
        inString=inString.Trim();
        bool haveNumber=false;
        bool haveDot=false;
        for(int i=0;i        {
               if (Char.IsNumber(inString[i]))
                {
                        haveNumber=true;
                }
                else if(inString[i]=='.')
                {
                        if (haveDot)
                        {
                                return false;
                         }
                         else
                         {
                                haveDot=true;
                          }
                }
                else if(i==0)
                {
                          if(inString[i]!='+'&&inString[i]!='-')
                          {
                                  return false;
                          }
                }
                else
                {
                          return false;
                 }
                if(i>20)
                {
                          return false;
                 }
         }
         return haveNumber;
       }

 

方案四:改写vb的IsNumeric源代码(执行效率不高)

//主调函数
public static bool IsNumeric(object Expression)
{
      bool flag1;
      IConvertible convertible1 = null;
      if (Expression is IConvertible)
      {
            convertible1 = (IConvertible) Expression;
      }
      if (convertible1 == null)
      {
            if (Expression is char[])
            {
                  Expression = new string((char[]) Expression);
            }
            else
            {
                  return false;
            }
      }
      TypeCode code1 = convertible1.GetTypeCode();
      if ((code1 != TypeCode.String) && (code1 != TypeCode.Char))
      {
            return Utils.IsNumericTypeCode(code1);
      }
      string text1 = convertible1.ToString(null);
      try
      {
            long num2;
            if (!StringType.IsHexOrOctValue(text1, ref num2))
            {
                  double num1;
                  return DoubleType.TryParse(text1, ref num1);
            }
            flag1 = true;
      }
      catch (Exception)
      {
            flag1 = false;
      }
      return flag1;
}
//子函数
// return Utils.IsNumericTypeCode(code1);
internal static bool IsNumericTypeCode(TypeCode TypCode)
{
      switch (TypCode)
      {
            case TypeCode.Boolean:
            case TypeCode.Byte:
            case TypeCode.Int16:
            case TypeCode.Int32:
            case TypeCode.Int64:
            case TypeCode.Single:
            case TypeCode.Double:
            case TypeCode.Decimal:
            {
                  return true;
            }
            case TypeCode.Char:
            case TypeCode.SByte:
            case TypeCode.UInt16:
            case TypeCode.UInt32:
            case TypeCode.UInt64:
            {
                  break;
            }
      }
      return false;
}

 

//-----------------
//StringType.IsHexOrOctValue(text1, ref num2))
internal static bool IsHexOrOctValue(string Value, ref long i64Value)
{
      int num1;
      int num2 = Value.Length;
      while (num1 < num2)
      {
            char ch1 = Value[num1];
            if (ch1 == '&')
            {
                  ch1 = char.ToLower(Value[num1 + 1], CultureInfo.InvariantCulture);
                  string text1 = StringType.ToHalfwidthNumbers(Value.Substring(num1 + 2));
                  if (ch1 == 'h')
                  {
                        i64Value = Convert.ToInt64(text1, 0x10);
                  }
                  else if (ch1 == 'o')
                  {
                        i64Value = Convert.ToInt64(text1, 8);
                  }
                  else
                  {
                        throw new FormatException();
                  }
                  return true;
            }
            if ((ch1 != ' ') && (ch1 != '/u3000'))
            {
                  return false;
            }
            num1++;
      }
      return false;
}
//----------------------------------------------------
// DoubleType.TryParse(text1, ref num1);
internal static bool TryParse(string Value, ref double Result)
{
      bool flag1;
      CultureInfo info1 = Utils.GetCultureInfo();
      NumberFormatInfo info3 = info1.NumberFormat;
      NumberFormatInfo info2 = DecimalType.GetNormalizedNumberFormat(info3);
      Value = StringType.ToHalfwidthNumbers(Value, info1);
      if (info3 == info2)
      {
            return double.TryParse(Value, NumberStyles.Any, info2, out Result);
      }
      try
      {
            Result = double.Parse(Value, NumberStyles.Any, info2);
            flag1 = true;
      }
      catch (FormatException)
      {
            flag1 = double.TryParse(Value, NumberStyles.Any, info3, out Result);
      }
      catch (Exception)
      {
            flag1 = false;
      }
      return flag1;
}

 

方案五: 直接引用vb运行库(执行效率不高)

方法: 首先需要添加Visualbasic.runtime的引用
 代码中Using Microsoft.visualbasic;
 程序中用Information.isnumeric("ddddd");

C#判断字符串是否为数字字符串 C#判断字符串是否为数字字符串 在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。 【方法一】:使用 try{} catch{} 语句。 我们可以在try语句块中试图将string类型的字符串变量转换为int类型,如果该字符串不是数字字符串则会抛出异常,这时在catch语句块中就能捕获异常。一旦发现异常,则不是数字字符串。 我们可以以下三种方式将s... 阅读详情

相关推荐

C#判断一个字符串是否是数字或者含有某个数字的方法

主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

[总结]C#判断一个string是否可以为数字,五种解决方案!

判断一个string是否可以为数字方案一:Try...Catch(执行效率不高)/// /// 名称:IsNumberic/// 功能:判断输入的是否是数字/// 参数:string oText:源文本/// 返回值: bool true:是 false:否/// /// /// private bool IsNumberic(string oText){try         {int va

(冰戈)hedonister的专栏 5900

永磁同步电机ADRC控制策略优化:从理论到Simulink仿真实践

本文深入探讨了永磁同步电机自抗扰控制(ADRC)策略的优化与实践。针对传统PID在动态响应、抗扰及噪声抑制方面的不足,详细解析了ADRC三大核心组件——跟踪微分器(TD)、扩张状态观测器(ESO)与非线性状态误差反馈(NLSEF)的工作原理。通过手把手的Simulink仿真教程,展示了从算法编写、模型搭建到参数整定的完整流程,并进阶实现了位置-速度双环ADRC协同控制,为高性能电机伺服系统设计提供了从理论到实践的清晰指南。

root9的博客 412

C#判断字符串中的内容是否为纯数字,最细教程

它通过将指定的字符串转换为等效的有符号整数表示并返回true。如果转换成功, true;这可以使用Regex.IsMatch()方法,它确定指定的字符串是否与提供的正则表达式匹配。Char.IsDigit()方法返回一个布尔值,用来指明指定的字符是否为数字。

i78i845的博客 8015

ANSYS 2022R2 安装教程:系统准备、许可证配置与故障排查

ANSYS 是面向工程仿真的多物理场商业软件平台,其安装远非普通应用软件的图形化向导流程,而涉及操作系统版本、运行库精确版本、硬件虚拟化支持、许可证服务架构等系统级配置。理解 ANSYS License Manager 的服务机制与端口依赖、掌握 Visual C++ 和 .NET Framework 的启用逻辑,是保障 Fluent、Mechanical、HFSS 等求解器稳定调用的基础。该技术栈广泛应用于高校教学、航空航天结构分析、电子设备电磁兼容仿真等场景。本指南聚焦 ANSYS 2022R2 版本在

weixin_28559803的博客 596

FPGA远程更新实战:Multiboot双镜像配置与Flash分区策略

本文详细介绍了FPGA远程更新中Multiboot双镜像的配置与实现,重点对比了XDC约束和ICAPE2原语两种配置方案的优缺点及适用场景。提供了基于W25Q128 Flash的非对称分区策略、MCS文件生成与烧写方法,并深入探讨了远程更新的流程容错处理与可靠性优化建议,帮助开发者构建稳定可靠的FPGA远程更新系统。

ss78901的博客 827

C# 正则表达式 判断string 是否是数字

public static bool IsNumeric(string value) {          return Regex.IsMatch(value, @"^[+-]?\d*[.]?\d*$"); } public static bool IsInt(string value) {          return Regex.IsMatch(value, @"^[+-]?\

除却猩猩不是猿 542

【微服务】Spring Aop原理深入解析

spring原理深度解析

congge 1万+

C#中处理字符串和数字

在优快云上有人问:C#中有没有判断一个string类型变量是否为数字类型的系统函数(如vb中的IsNumeric(s))? 答案肯定是没有的。有人提议用int.Parse(string)的方法,然后通过捕获异常来判断返回的值。更好的方法是用正则表达式:public int IsNumeric(string str){      int i;      if(str != null &amp;&...

weixin_33795833的博客 151

【AI理论学习】手把手推导扩散模型:Diffusion Models(DDPM)

生成扩散模型DDPM如下图所示分为前向、逆向两个过程,它首先通过不断往原始清晰数据中添加噪声使其变成标准高斯噪声(前向过程),而后期望从标准高斯噪声中还原原始数据(逆向过程)。若能实现,那便可从已知的标准高斯分布中采样一个噪声数据,而后利用DDPM模型生成符合原始数据分布的新数据。 Diffusion模型包含两个过程:数学符号:y∝xy\propto xy∝x:y正比于x,即y随着x增大而线性增大。 条件概率:贝叶斯公式:p(A∣B)=p(B∣A)×p(A)p(B)p(A|B)=\frac{p(B|A)\

小哲的博客 1508

【智能车Code review】——小S与中S道路判断

基本思想: 找到中线的左拐点和右拐点,并且计算出两点之间的空间距离。通过限制空间距离,分为中S和小S。 注意这种情况:当20行以下的中线斜率比较陡,此时可以通过人为限制设定,将第0行的中线设置为拐点。 if (flag_centre_right_point == 0 && flag_centre_left_point == 1 && parameterB >= 0.5 && centre_left_point[0] >= 33) { .

hanhan的博客 6102

C#使用重载方法实现不同类型数据的计算

为了避免异常,可以先使用Decimal.Parse(string)方法将字符串转换为小数,然后再使用Convert.ToInt32(decimal)方法将小数转换为整数。如果一个类中存在两个以上的同名方法,并且方法的参数类型、个数或者顺序不同,当调用这样的方法时,编译器会根据传入的参数自动进行判断,决定调用哪个方法。例如,字符串是"123.456",包含非数字字符"."。重载方法就是方法名称相同,但是每个方法中参数的数据类型、个数或顺序不同的方法。如果字符串包含非数字字符,例如小数点,该方法将引发异常。

wenchm的博客 1431

2026 年第十六届MathorCup数学应用挑战赛题目C题中老年人群高血脂症的风险预警及干预方案优化 2026妈妈杯 详细思路、代码、模型

2026 年第十六届MathorCup数学应用挑战赛题目 C题中老年人群高血脂症的风险预警及干预方案优化 人口老龄化进程的持续加快,使得40岁及以上中老年人群成为 慢性病防控的核心群体,其中高血脂症的发病率呈逐年攀升态势, 已成为诱发冠心病、脑梗死等心脑血管疾病的重要危险因素,严重 威胁中老年群体的心血管健康与生活质量,也加重了基层医疗的慢 病管理负担。从中医体质学视角来看,体质禀赋与偏颇是疾病发生 发展的内在根基,其中痰湿体质为中老年高血脂症的高发体质类型, 该体质人群存在痰湿内蕴、脾胃运化失常、水湿代谢

YOLO 753

C#中字符串的比较

在C#中字符创的比较string.compare(,)string.compare(,,true)   //不区分大小写 逻辑值得比较 .T.   .F.  .t.  .f. int a = string.Compare("1(.F.)", ".F.", true)   结果a=1数字的比较int a = string.Compare("2(2)", "2", true

移动娱乐-im臭皮匠的博客 959

UniRx之基本语法格式

想要更好的去学习UniRx,我们最好是先理解UniRx 的语法格式。就像我们去学习英语或者汉语一样,理解了基本的语法规则后,再学其他的就信手拈来了。

TxNet 924

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C#判断字符串是否是数字最简单的正则表达式

if (theStr!= null)//注意加非空判断,否则报错 {  System.Text.RegularExpressions.Regex rex =  new System.Text.RegularExpressions.Regex(@"^\d+$");//^开始,\d匹配一个数字字符,+出现至少一次,$结尾  if (rex.IsMatch(theStr))  {  } } 转载于:...

weixin_30496431的博客 135

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C# 简单使用正则表达式来提取字符串中 V 后面的数字

【代码】C# 简单使用正则表达式来提取字符串中 V 后面的数字。

kll741的博客 860

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C#判断一个string是否为数字

C#判断一个string是否为数字 案一:Try...Catch(执行效率不高) private bool IsNumberic(string oText) { try { int var1=Convert.ToInt32 (oText); return true; ...

cxu123321的博客 901

C#判断一个string是否可以为数字,五种解决方案

C#判断一个string是否可以为数字,五种解决方案 判断一个string是否可以为数字 方案一:Try...Catch(执行效率不高)/// /// 名称:IsNumberic/// 功能:判断输入的是否是数字/// 参数:string oText:源文本///...

diaosuicui8491的博客 928

【C#】正则表达式判断字符是否汉字,数字,字母

/// <summary> /// 判断是否汉字 /// </summary> private bool IsChinese(string value) { Regex rg = new Regex("^[\u4e00-\u9fa5]$"); return rg.IsMatch(value); } /// <summary> /// 判...

GreAmbWang的博客 5124
下一篇: C#单实例模式
cg_program
博客等级 码龄19年 245粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值