前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文入门高性能计算HPC-详解1
高性能计算(HPC) 是使用多组尖端计算机系统执行标准商用计算系统无法实现的复杂模拟、计算和数据分析的艺术和科学。
晓兵
2025/03/29
1360
一文入门高性能计算HPC-详解1
InfiniBand与MPI
IB(InfiniBand)和 RDMA(Remote Direct Memory Access)是一种高性能网络技术,通常用于加速数据传输。它们不是基于传统的 TCP/IP 协议栈,而是使用自己的协议栈,以实现低延迟、高带宽的数据传输。
用户8891103
2023/09/14
1.9K0
Kubernetes上的高性能计算 (HPC)
机器学习 (ML) 工程在过去几年已演变为一门学科和职业道路。软件工程师构建 Web、移动和嵌入式体验,而 ML 工程师提供模型版本、推理和整个 RAG 应用程序。
云云众生s
2024/04/11
3310
DAOS分布式存储_libfabric_高性能RPC_rdma网络_笔记
博客: https://logread.cn | https://blog.csdn.net/ssbandjl | https://cloud.tencent.com/developer/user/5060293/articles
晓兵
2023/11/03
6290
DAOS分布式存储_libfabric_高性能RPC_rdma网络_笔记
OpenFabrics 接口简介-用于最大限度提高-高性能应用程序效率的新网络接口(API)-[译]
OpenFabrics Interfaces (OFI) 是一个新的应用程序接口系列,它向中间件和应用程序公开通信服务。 Libfabric 是 OFI 的第一个成员,是在 OpenFabrics 联盟的支持下,由行业、学术界和国家实验室合作伙伴组成的广泛联盟在过去两年中设计的。 libfabric 在 verbs 接口的目标和目标的基础上进行构建和扩展,专门设计用于满足高性能应用程序的性能和可扩展性要求,例如消息传递接口 (MPI) 库、对称分层内存访问 (SHMEM) 库、分区全局地址 Space (PGAS) 编程模型、数据库管理系统 (DBMS) 以及在紧密耦合的网络环境中运行的企业应用程序。 libfabric 的一个关键方面是它被设计为独立于底层网络协议以及网络设备的实现。 本文简要讨论了创建新 API 的动机,描述了驱动其设计的新颖需求收集过程,并总结了 API 的高级架构和设计
晓兵
2023/09/17
7920
OpenFabrics 接口简介-用于最大限度提高-高性能应用程序效率的新网络接口(API)-[译]
Intel高性能IO500分布式存储系统DAOS资源汇总-包含RDMA 网络 SPDK NVME TSE 任务调度 异步 事件队列等
DAOS在后傲腾时代的发展策略: https://www.bilibili.com/video/BV1Qw411377s
晓兵
2023/10/16
2.1K0
Intel高性能IO500分布式存储系统DAOS资源汇总-包含RDMA 网络 SPDK NVME TSE 任务调度 异步 事件队列等
Mercury为高性能计算启用远程过程调用(RPC)
远程过程调用(RPC)是分布式服务广泛使用的一种技术。 这种技术现在越来越多地用于高性能计算 (HPC) 的上下文中,它允许将例程的执行委托给远程节点,这些节点可以留出并专用于特定任务。 然而,现有的 RPC 框架采用基于套接字的网络接口(通常在 TCP/IP 之上),这不适合 HPC 系统,因为此 API 通常不能很好地映射到这些系统上使用的本机网络传输,从而导致网络性能较低。 此外,现有的 RPC 框架通常不支持处理大数据参数,例如在读取或写入调用中发现的参数。我们在本文中提出了一个异步 RPC 接口,专门设计用于 HPC 系统,允许参数和执行请求的异步传输和直接支持大数据参数。 该接口是通用的,允许传送任何函数调用。 此外,网络实现是抽象的,允许轻松移植到未来的系统并有效使用现有的本地传输机制
晓兵
2023/06/23
5670
Mercury为高性能计算启用远程过程调用(RPC)
Intel开放互联接口OFI(libfabric)入门教程 rdma verbs gpu ai dma network HOTI 互联 HPC panda 博士
本文介绍了libfabric的基本教程, 以及常见代码示例, 包含tcp_socket, libfabric, gpu, dma等代码和示例, 内容基于intel专家的的视频和个人理解, 欢迎一起交流高性能存储, 分布式存储, 网络, rdma等技术
晓兵
2023/10/02
1.6K0
Intel开放互联接口OFI(libfabric)入门教程 rdma verbs gpu ai dma network HOTI 互联 HPC panda 博士
signature=0fdde99449705347b1bc3148e0519684,yarn.lock · mirrors_yeoman/generator-generator – Gitee.co
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
全栈程序员站长
2022/10/02
4550
html构建桌面端应用框架tauri
和 Electron 的主要区别是它更快,而且是用Rust编写,前端是用 TAO 和 WRY,更加轻量
阿超
2024/08/23
1600
html构建桌面端应用框架tauri
IOR中文文档
IOR是一个并行的IO基准,可用于测试使用各种接口和访问模式的并行存储系统的性能。接口和访问模式的并行存储系统的性能。IOR资源库还包括mdtest基准,专门测试不同目录结构下存储系统的元数据峰值速率。在不同目录结构下存储系统的元数据峰值速率。这两个基准都使用一个共同的并行 I/O抽象后端,并依靠MPI进行同步。本文档由两部分组成。用户文档包括安装说明(Install),初学者教程(IOR的第一步),以及关于IOR的运行时选项的信息。开发者文档包括用Doxygen生成的代码文档和一些关于与Travis的连续整合的说明。IOR/mdtest用户和开发者文档的许多方面都是不完整的,我们鼓励贡献者 鼓励贡献者直接评论代码或在此基础上扩展文档。
姚华
2022/06/29
6K0
IOR中文文档
统一通信 X(UCX) 实现高性能便携式网络加速-UCX入门教程HOTI2022
官方文档: https://openucx.readthedocs.io/en/master/
晓兵
2023/10/10
3.5K0
统一通信 X(UCX) 实现高性能便携式网络加速-UCX入门教程HOTI2022
DAOS_分布式存储_mercury_libfabric_rdma_rpc高性能网络_大块数据_bulk传输_中断_轮询自动切换_等笔记
博客: https://logread.cn | https://blog.csdn.net/ssbandjl | https://cloud.tencent.com/developer/user/5060293/articles
晓兵
2023/11/03
3950
DAOS_分布式存储_mercury_libfabric_rdma_rpc高性能网络_大块数据_bulk传输_中断_轮询自动切换_等笔记
分布式深度学习最佳入门(踩坑)指南
本文主要介绍了分布式深度学习的各框架以及一些分布式深度学习训练中的常见问题,如:docker及ssh环境问题、nccl多机通信问题等。
计算机视觉
2021/01/14
3.5K0
分布式深度学习最佳入门(踩坑)指南
星融元HPC高性能计算测试方案(附PDF下载链接)
一位来自金融行业的客户,他们希望可以实时地模拟和响应风险,以实现企业金融风险管理能力的提升。事实上,不管是金融行业还是其他行业,要想加快步伐满足快速数字化世界中的客户需求,就必须能够比标准计算机更快地处理大量数据。高性能计算(HPC)解决方案,正在受到企业们的青睐。
星融元Asterfusion
2022/05/30
9880
星融元HPC高性能计算测试方案(附PDF下载链接)
分布式存储_高性能RDMA网络_架构设计_性能调优参考_网卡排查命令_笔记
博客: https://logread.cn | https://blog.csdn.net/ssbandjl | https://cloud.tencent.com/developer/user/5060293/articles
晓兵
2023/11/03
4.6K0
分布式存储_高性能RDMA网络_架构设计_性能调优参考_网卡排查命令_笔记
软硬件融合视角:一文看懂高性能网络
随着大模型的广泛流行,GPU集群计算的规模越来越大(单芯片算力提升有限,只能通过扩规模的方式来提升整体算力),千卡、万卡已经成为主流,十万卡、百万卡也都在未来3-5年的规划中。
chaobowx
2024/06/26
9362
软硬件融合视角:一文看懂高性能网络
RDMA - GDR GPU Direct RDMA快速入门1
NVIDIA GPUDirect 是一系列技术, 用于增强 GPU间(P2P)或GPU与第三方设备(RDMA)间的数据移动和访问, 无论您是在探索海量数据、研究科学问题、训练神经网络还是为金融市场建模,您都需要一个具有最高数据吞吐量的计算平台。GPU 的数据处理速度比 CPU 快得多,随着 GPU 计算能力的提高,对 IO 带宽的需求也随之增加。NVIDIA GPUDirect®是Magnum IO的一部分,可增强 NVIDIA 数据中心 GPU 的数据移动和访问。使用 GPUDirect,网络适配器和存储驱动器可以直接读取和写入 GPU 内存,从而消除不必要的内存复制、减少 CPU 开销和延迟,从而显着提高性能。这些技术(包括 GPUDirect Storage(GDS)、GPUDirect RDMA(GDR)、GPUDirect 点对点 (P2P) 和 GPUDirect Video)通过一套全面的 API 呈现
晓兵
2025/03/30
2020
RDMA - GDR GPU Direct RDMA快速入门1
RDMA - GDR GPU Direct RDMA快速入门2
https://hpcadvisorycouncil.atlassian.net/wiki/spaces/HPCWORKS/pages/2791440385/GPUDirect+Benchmarking
晓兵
2025/03/30
1370
RDMA - GDR GPU Direct RDMA快速入门2
「Strve.js@2.x正式发布与做open source的一些感受」从90%到100%这个过程真难!
可能我比较幸运点吧!因为在美国这边大家对工作平衡比较注意,像谷歌的话就比较舒服的了。虽然我们刚进去也年轻,偶尔也加加班,但是整体而言,在谷歌的话,你任务完成了想什么时候走都可以。所以在国内确实会难一些,业务压力会大的话。所以如果你真的觉得业务压力就更大,工作就很忙。那我建议就可能不要逼自己,如果真觉得太累,就不要逼自己。 这个开源本身也其实就是说,这个大家做开源其实都有一个阶段,就是你刚开始有一个想法想把它做出来,刚开始是一种快乐的一种状态,就是把一个想法从零到一那种快感,就是做技术人员都有这种创造一种东西的想法。但是开源在另一个过程完成之后立刻进入一种,就是从90%到100%这个过程其实是很困难的,你就会发现把一个玩具做成真的能用的东西就需要投入很多,当你把它做得真的能用,真的有人用的时候,这些人就会继续给你提不停的要求。这就说,哎呀!我得去回应这些人的期待,这又是一种心理压力。 其实说就是很多时候,大家都是刚开始做开源的时候,这种创造一种东西的快感所吸引。没有意识到你以后会有很多的commit。我对很多想要做开源的朋友的建议是,想清楚你做开源想要做什么,如果你就只是想写一个库觉得很爽,但是我后期不想去做让它耗费我很多精力去维护它,也没有问题,其实就跟大家明确这个想法。但是如果说你想做一个项目想做大做好,想跟React竞争的项目,那这个东西需要极大的投入的。如果你工作本质就很烦忙,那么大概率你就没有可能做这个。所以确实说,想好你的想要什么吧!如果你没有真的条件,如果真的很拼很拼,我就是996,我也要做开源,那你要做好心理准备。我有一段时间把自己搞成996这种状态,就是上完班回来搞Vue,其实这样精神压力是挺大的。我现在可能站着说话不腰疼,我现在还是觉得平衡一点的好。
Vam的金豆之路
2022/03/30
1.6K0
「Strve.js@2.x正式发布与做open source的一些感受」从90%到100%这个过程真难!
推荐阅读
相关推荐
一文入门高性能计算HPC-详解1
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文