C# 判定字符串是否为数字的方法

方法一、使用decimal的TryParse方法

该方法只有当字符串是数字的时候,才能将字符串转换为数字并且返回结果true,否则将字符串转换为0并且返回结果false。

此方法特别适用于字符串不是数字,防止转换过程中出现异常的情况,如果字符串不是数字,方法默认返回0。

            #region 只有当字符串是数字的时候TryParse方法才能将字符串转换为数字并且返回结果true,否则将字符串转换为0并且返回结果falsestring val01 = "0.0004887581";string val02 = "0.031136a";string val03 = "";string val04 = "  ";string val05 = ".";string val06 = "&89*";string val07 = null;string val08 = "100.5";string val09 = "p99";string val10 = "-0.005689";string val11 = "-889.23";bool result01 = decimal.TryParse(val01, out decimal targetVal01);bool result02 = decimal.TryParse(val02, out decimal targetVal02);bool result03 = decimal.TryParse(val03, out decimal targetVal03);bool result04 = decimal.TryParse(val04, out decimal targetVal04);bool result05 = decimal.TryParse(val05, out decimal targetVal05);bool result06 = decimal.TryParse(val06, out decimal targetVal06);bool result07 = decimal.TryParse(val07, out decimal targetVal07);bool result08 = decimal.TryParse(val08, out decimal targetVal08);bool result09 = decimal.TryParse(val09, out decimal targetVal09);bool result10 = decimal.TryParse(val10, out decimal targetVal10);bool result11 = decimal.TryParse(val11, out decimal targetVal11);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val01), result01, targetVal01);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val02), result02, targetVal02);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val03), result03, targetVal03);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val04), result04, targetVal04);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val05), result05, targetVal05);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val06), result06, targetVal06);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val07), result07, targetVal07);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val08), result08, targetVal08);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val09), result09, targetVal09);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val10), result10, targetVal10);Console.WriteLine("变量 {0},转换结果为{1},转换后的数值为 {2}", nameof(val11), result11, targetVal11);#endregion

 输出:

变量 val01,转换结果为True,转换后的数值为 0.0004887581
变量 val02,转换结果为False,转换后的数值为 0
变量 val03,转换结果为False,转换后的数值为 0
变量 val04,转换结果为False,转换后的数值为 0
变量 val05,转换结果为False,转换后的数值为 0
变量 val06,转换结果为False,转换后的数值为 0
变量 val07,转换结果为False,转换后的数值为 0
变量 val08,转换结果为True,转换后的数值为 100.5
变量 val09,转换结果为False,转换后的数值为 0
变量 val10,转换结果为True,转换后的数值为 -0.005689
变量 val11,转换结果为True,转换后的数值为 -889.23

方法二、使用正则表达式 

使用正则表达式判断字符串是否为数字,如果是数字结果为true,否则结果为false。

            //正则表达式string pattern = "(^[0-9]+$)|(^-[0-9]+$)|(^[0-9]+.[0-9]+$)|(^-[0-9]+.[0-9]+$)";string number01 = "67";string number02 = "-90";string number03 = "56.23";string number04 = "-78.885";string number05 = "a456";string number06 = "7879_p";bool result01 = Regex.IsMatch(number01, pattern);bool result02 = Regex.IsMatch(number02, pattern);bool result03 = Regex.IsMatch(number03, pattern);bool result04 = Regex.IsMatch(number04, pattern);bool result05 = Regex.IsMatch(number05, pattern);bool result06 = Regex.IsMatch(number06, pattern);Console.WriteLine("{0} 是否为数字 {1}", number01, result01);Console.WriteLine("{0} 是否为数字 {1}", number02, result02);Console.WriteLine("{0} 是否为数字 {1}", number03, result03);Console.WriteLine("{0} 是否为数字 {1}", number04, result04);Console.WriteLine("{0} 是否为数字 {1}", number05, result05);Console.WriteLine("{0} 是否为数字 {1}", number06, result06);

输出:

67 是否为数字 True
-90 是否为数字 True
56.23 是否为数字 True
-78.885 是否为数字 True
a456 是否为数字 False
7879_p 是否为数字 False

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】第3章 K-近邻算法

一、概念 1.K-近邻算法:也叫KNN 分类 算法,其中的N是 邻近邻居NearestNeighbor的首字母。 (1)其中K是特征值,就是选择离某个预测的值(例如预测的是苹果,就找个苹果)最近的几个值&am…

代码随想录算法训练营第四十一天 | 01背包理论基础、416. 分割等和子集

01背包理论基础 题目链接:https://kamacoder.com/problempage.php?pid1046 文档讲解:01背包理论基础(一)、01背包理论基础(二) 视频讲解:01背包理论基础(一)、01背包理论…

Javaweb07-JavaBean技术和Jsp开发模式

JavaBean技术和Jsp开发模式 一.JavaBean技术 1.JavaBean的基本概念 **JavaBean组件:**与html分离且使用Java代码封装类 **JavaBean分类:**可视化JavaBean:swing 非可视化JavaBean:用于封装实体和业务逻辑 JavaBean特点&#x…

把Vue文件转至树莓派上遇到的问题和解决方案

把整个文件夹复制进树莓派后,运行 npm run dev ,报错sh: 1: vite: Permission denied 解决方案:删除项目里的 node_modules 重新 npm install 再运行即可 rm -rf node_modules/ npm install 在安装过程中,遇到下图问题,vulnerabi…

【热门开源项目推荐】满足不同程序员的需求与关注点

目录 前言一、热门开源项目介绍二、使用开源热门项目的优势(一)经济方面(二)技术方面(三)社区支持及协作方面 三、程序员选择项目模型建议(一)关键步骤(二)示…

掌握rpc、grpc并探究内在本质

文章目录 rpc是什么?又如何实现服务通信?理解rpcRPC的通信过程通信协议的选择小结RPC VS Restful net_rpc实践案例net/rpc包介绍创建服务端创建client 看看net_rpc的通信调度实现的内部原理明确目标基于自己实现的角度分析我会怎么做代码分析 grpc介绍与…

使用微信小程序制作画布

在这个技术飞速发展的时代,微信小程序已经成为了人们生活中不可或缺的一部分。它们可以为用户提供各种各样的功能和娱乐,其中之一就是制作画布。在本文中,我们将介绍如何使用微信小程序创建一个简单的画布应用,并为你展示如何实现…

c++实现二叉搜索树(下)

好久不见啊,baby们,小吉我又回归了,发完这一篇小吉将会有两周时间不会更新blog了(sorry),在小吉没有发blog的日子里大家也要好好学习数据结构与算法哦,还有就是别忘了小吉我❤️  这篇博客是二…

充电学习—7、BC1.2 PD协议

BC1.2(battery charging)充电端口识别机制: SDP、CDP、DCP 1、VBUS detect:vbus检测 PD(portable device,便携式设备)中有个检测VBUS是否有效的电路,电路有个参考值,高…

NumPy 双曲函数与集合操作详解

NumPy 双曲函数 NumPy 提供了 sinh()、cosh() 和 tanh() 等 ufunc,它们接受弧度值并生成相应的双曲正弦、双曲余弦和双曲正切值。 示例: import numpy as npx np.sinh(np.pi/2)print(x)示例 找到数组 arr 中所有值的双曲余弦值: import…

基于CNN的掩码自编码器微调用于分类任务

开源仓库 JJLi0427/CNN_Masked_Autoencoder: Design a patches masked autoencoder by CNN (github.com)https://github.com/JJLi0427/CNN_Masked_Autoencoder CNN自编码器 前面的文章中我们模仿MAE的思路用CNN做了一个掩码自编码器 动手小实验,用CNN来构建Mase…

python学习笔记-07

python内置函数 内置函数就是python自带的函数,不需要我们再去定义的,如print等直接使用即可,内置函数官方文档:官链。 1.数学运算 #数学运算: print(------abs()是绝对值函数------) a-1.1 print({}的绝对值是{}.fo…

MongoDB 正则表达式

MongoDB 正则表达式 MongoDB 是一个流行的 NoSQL 数据库,它提供了强大的查询功能,包括对正则表达式的支持。正则表达式是一种强大的文本搜索工具,它允许用户根据特定的模式匹配和搜索字符串。在 MongoDB 中,正则表达式可以用于查…

异常处理总结

自定义异常 ​ 系统中的异常可以分为我们能预知的异常和未知的系统异常,对于我们能预知的异常如空值判断,用户名错误,密码错误等异常我们需要返回客户端,对于系统内部异常如SQL语法错误,参数格式转换错误等需要统一包…

MySQL之复制(三)

复制 从另一个服务器开始复制 前面的设置都是嘉定主备库均为刚刚安装好且都是默认的数据,也就是说两台服务器上数据相同,并且知道当前主库的二进制日志。这不是典型的案例,大多数情况下有一个已经运行了一段时间的主库,然后用一…

QT day04

一、思维导图 二、登录界面优化 代码: 界面: *{background-color: rgb(255, 255, 255); }QFrame#frame{border-image: url(:/Logo/shanChuan.jpg);border-radius:15px; }#frame_2{background-color: rgba(110, 110, 110, 120);border-radius:15px; }Q…

redis-大key及影响

一、什么是大key Redis大Key其实并不是字面意思,不是指存储在Redis中的某个Key的大小超过一定的阈值,而是指该Key所对应的value过大。对于string类型来说,一般情况下超过10KB则认为是大Key,对于set,zset,h…

使用芯片为ZYNQ—7020,基于野火FPGA ZYNQ开发板

使用芯片为ZYNQ—7020,基于野火FPGA ZYNQ开发板 肤色模型简介 YCrCb也称为YUV,主要用于优化彩色视频信号的传输。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其…

国内如何高速下载hugginging face模型

国内如何高速下载hugginging face模型 背景 如今开源大模型很多,相较于线上的调用接口,本地部署更有吸引力。这就免不了需要去Huggingface上下载模型,但因为国内管制要求,huggingface 并不能直接访问,或者下载速度很…

统计学一(术语,正态)

目录 一,常用术语 二,正态分布(Normal Distribution) 三,中心极限定理(Central Limit Theorem) 一,常用术语 population(族群):要统计的总的 populationSize(族群数量):要统计的总…