前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >判断一个string是否可以为数字

判断一个string是否可以为数字

作者头像
Java架构师必看
发布于 2021-03-22 02:49:19
发布于 2021-03-22 02:49:19
7980
举报
文章被收录于专栏:Java架构师必看Java架构师必看

方案一:Try...Catch(执行效率不高)//////名称:IsNumberic///功能

方案一:Try...Catch(执行效率不高) /// <summary> /// 名称:IsNumberic /// 功能:判断输入的是否是数字 /// 参数:string oText:源文本 /// 返回值: bool true:是 false:否 /// </summary> /// <param name="oText"></param> /// <returns></returns> private bool IsNumberic(string oText) { try          { int var1=Convert.ToInt32 (oText); return true;          } catch { return false; } }

方案二:正则表达式(推荐) a) 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); }

b) 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*$"); } 方案三:遍历 a) public bool isnumeric(string str) {     char[] ch=new char[str.Length];     ch=str.ToCharArray();     for(int i=0;i<ch.Length;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<inString.Length;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");

本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
c#判断输入文字是否是数字
方案三:      正则表达式方法      例:      //引用正则表达式类      using   System.Text.RegularExpressions;       Regex   reg=new   Regex("^[0-9]+$");       Match   ma=reg.Match(text);       if(ma.Success)       {        //是数字       }       else       {       //不是数字       }      注:此方法快捷,但不太容易掌握,尤其是正则表达式公式,如果有兴趣的朋友可以好好研究,这东西很好用的,建议使用。
阳光岛主
2019/02/19
6.4K0
停止使用==和!=来判断浮点数是否相等
浮点数在计算机中是以二进制形式存储的,这种表示方式会导致精度问题.例如,十进制的小数0.1在二进制中是一个无限循环小数,计算机只能存储其近似值.因此,两个看似相等的浮点数在计算机中可能并不完全相等.
郑子铭
2024/12/20
740
停止使用==和!=来判断浮点数是否相等
C# 结合 JavaScript 对 Web 控件进行数据输入验证
在 Web 应用的录入界面,数据验证是一项重要的实现功能,数据验证是指确认 Web 控件输入或选择的数据,是否满足数据表数据约束,是否满足应用程序所需要数据约束规则。建立数据库约束可以满足数据验证的应用,但在实际的应用中,我们建议还是在更新信息到数据库前,在应用中执行数据验证,这样可减少错误录入,减少应用程序与数据库之间频繁通信造成的服务器压力。通过有效的数据验证,可以确认写入数据表中的数据是有效且符合预期的。本文我们将介绍如何通过C# 后端及JavaScript 前端对 Web 控件进行数据输入有效性的验证。
初九之潜龙勿用
2024/06/20
1370
C# 结合 JavaScript 对 Web 控件进行数据输入验证
.net基本数据类型操作
摘要总结:本文主要介绍了.NET Core中DateTimeOffset类型的基本用法、以及如何在其他编程语言中使用DateTimeOffset。此外,还介绍了如何在.NET Core中处理时间、时区、夏令时等信息。
彭泽0902
2018/01/04
5270
Java工具集-密码检测工具
代码示例 import java.util.regex.Pattern; /** * @program: simple_tools * @description: 密码检测工具类 * @author: Mr.chen * @create: 2020-05-18 11:26 **/ public class PasswordUtils { /** * 判断是否为纯数字简单密码 * @param pwd * @return 如 111111 123456 65
cwl_java
2020/06/10
1.2K0
C#常用操作类库一(验证类)
public class Validator     {         #region  验证输入字符串为数字         /// <summary>         /// 验证输入字符串为数字         /// </summary>         /// <param name="strln">输入字符</param>         /// <returns>返回一个bool类型的值</returns>         public static bool IsNumber(string
跟着阿笨一起玩NET
2018/09/18
8010
【算法】字符串算法技巧系列
String a = “abcdefg” char[] a1= a.toCharArray()
三三是该溜子
2025/01/13
980
【算法】字符串算法技巧系列
ASP.NET 应用中大文件上传研究
在项目中经常要用到了大文件上传,要上传的文件有100多m,于是研究现在国内使用的大文件上传的组件发现
Java架构师必看
2020/09/30
1.8K0
C#操作操作类库五(字符串的常用扩展方法)
验证字符串是否由正负号(+-)、数字、小数点构成,并且最多只有一个小数点 验证字符串是否仅由[0-9]构成 验证字符串是否由字母和数字构成 验证是否为空字符串。若无需裁切两端空格,建议直接使用 String.IsNullOrEmpty(string) 裁切字符串(中文按照两个字符计算) 裁切字符串(中文按照两个字符计算,裁切前会先过滤 Html 标签) 过滤HTML标签 获取字符串长度。与string.Length不同的是,该方法将中文作 2 个字符计算。 将形如 10.1MB 格式对用户友好的文件大小字符
跟着阿笨一起玩NET
2018/09/18
8090
C# 正则表达式大全「建议收藏」
在网上看到一个不错的简易版正则匹配和替换的工具,现在补充进来,感觉还不错,效果如下(输入验证中文汉字的正则表达式)
全栈程序员站长
2022/09/06
1.7K0
C# 正则表达式大全「建议收藏」
c#测试字符串是否为GUID的几种方法
以前为了赶项目遇到这种需求时,也没过多考虑性能因素,随便写了一个(现在看起来很原始的)方法来实现: static bool IsGuidByError(string strSrc) { if (String.IsNullOrEmpty(strSrc)) { return false; } bool _result = false; try { Guid _t = n
菩提树下的杨过
2018/01/19
2.1K0
【Leetcode】string类刷题
接着,创建两个索引,begin和end,一个从前往后找,找到一个字母停止,另一个从后面找,找到字母停止,然后进行交换,保证begin<end,比较简单,代码如下:
用户11029103
2024/04/20
990
【Leetcode】string类刷题
米哈游面试算法题:有效的括号
描述:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
GeekLiHua
2025/01/21
940
实现支持断点续传多线程下载的 Http Web 客户端C#工具类
/* .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient) 2005-03-14 修订: /* .Net/C#: 实现支持断点续传多线程下载的工具类 Reflector 了一下 System.Net.WebClient ,改写或增加了若干: DownLoad、Upload 相关方法! 增加了 DataReceive、ExceptionOccurrs 事件 */ namespace Microshaoft.Utils { usi
用户7705674
2021/11/02
1.2K0
数据类型
C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存
用户10731060
2023/08/29
1640
C++刷题(三):string
将字符串数字转换成对应整型的方法即:用字符数字的ASCII-‘0’,这道题的难点在于,如何判断边界,处理溢出问题。我们必须在计算前就判断是否越界,因为不管是否储存了表达式的结果,如果计算发生越界,则返回的就是溢出后的数据(即数据不是真实的计算结果,无法按照正常逻辑比较数字大小)。
用户11029137
2025/03/19
400
C++刷题(三):string
Leetcode之string
题目思路: 本题为大数运算类型题目, 不能用于处理大整数的库, 但可以使用一般的算术运算, 我们进行模拟, 首先依次取出每个数字的最后一位,进行加法运算, 并且将值分为进位和数值, 第一次的进位next = 0 , 这里只有当num1和num2都结束才能结束循环, 例如下面999999999+1, 如果其中一个数字已经结束, 则在高位补0, 并且将每一次的值追加到答案字符串, 循环结束, 如果进位还有值, 也追加到结束字符串, 最后逆置字符串.
用户11317877
2024/10/16
730
Leetcode之string
【数据算法与结构】栈与队列篇
思路: pushV中的元素依次入栈,和popV中的元素比较,如果相同就出栈,遍历结束后,如果栈为空,那么就说明是正确的弹出顺序.
xxxflower
2024/03/11
860
【数据算法与结构】栈与队列篇
【OJ】string类题目
再定义一个变量用来记录进位int next=0;。重新定义一个string的字符串用来记录相加结果string retstr。 当两个字符相加,得注意,要转换为整形相加,当ret大于10,那么next=ret/10,而字符穿要记录的是ret=ret%10,再头插retstr.insert(0,1,ret+'0'),头插时要转换为字符头插。 如果9+1,那么返回结果就是0,所以不能忘记少插入进位值,在最后判断一下,再进行头插:
zxctscl
2024/03/17
920
【OJ】string类题目
各种基本算法实现小结(七)—— 常用算法
======================================================================
阳光岛主
2019/02/20
4070
相关推荐
c#判断输入文字是否是数字
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文