C# 检查一个字符串是否是科学计数法格式字符串 如 1.229266E+01

        在 C# 中,要检查一个字符串是否是科学计数法格式,你可以使用正则表达式(Regex)来匹配该格式。科学计数法格式通常形如 ±a.bcdef...e±x 或 ±aE±x,其中 a 是非零数字,bcdef... 是可选的小数部分,x 是指数部分。

        以下是一个示例代码,展示了如何使用正则表达式来检查字符串是否符合科学计数法的格式,包括提供的示例 1.229266E+01

using System;
using System.Text.RegularExpressions;class Program
{static void Main(){string[] testStrings = {"1.229266E+01","-3.14E-2","2.71E3","6.022E23","123",        // Not scientific notation"1.23.45E6",  // Invalid format"1.23e",      // Incomplete exponent"e42",        // Missing number before exponent"1.23x10^4"   // Not scientific notation, uses 'x' instead of 'e' or 'E'};foreach (var str in testStrings){bool isScientific = IsScientificNotation(str);Console.WriteLine($"{str} is scientific notation: {isScientific}");}}static bool IsScientificNotation(string input){// 正则表达式匹配科学计数法格式// ^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?$// ^        - 字符串开始// [-+]?    - 可选的正负号// \d+      - 一个或多个数字(非零,但正则表达式无法强制这一点,需要在逻辑中额外处理)// (\.\d+)? - 可选的小数部分(一个点和一个或多个数字)// ([eE]    - 'e' 或 'E' 表示指数开始// [-+]?\d+ - 可选的正负号和一个或多个数字表示指数// )?       - 指数部分是可选的// $        - 字符串结束// 注意:这个正则表达式不会强制数字部分不以0开头(除非它是整个数字,如0.123e4是有效的),// 也不会强制小数点后至少有一位数字(如1e4是有效的科学计数法)。// 如果需要更严格的验证,正则表达式可以进一步复杂化。// 但是,对于大多数用途来说,下面的正则表达式应该足够了,并且它会匹配你提供的示例。string pattern = @"^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?$";Regex regex = new Regex(pattern);// 使用正则表达式匹配输入字符串Match match = regex.Match(input);// 检查是否匹配,并且数字部分不是以0开头(除非它是整个数字,如0.123e4)// 注意:这个检查不是完美的,因为它允许如001.23e4这样的字符串(尽管它们不是有效的科学计数法),// 但对于大多数实际应用来说可能已经足够了。如果需要更严格的检查,请考虑使用额外的逻辑来处理。if (match.Success){// 检查数字部分是否不以0开头(除非它是整个字符串,并且可能是0.xxx的形式)if (input[0] == '0' && input.Length > 1 && input[1] != '.'){// 如果第一个字符是0,并且后面不是小数点,则不是有效的科学计数法(除非它是0.xxx的形式)// 但是,由于我们已经匹配了小数点后的数字(如果有的话),所以这里只需要检查不是单独的0// 并且不是0后面紧跟非小数点字符的情况。单独的0(如0e4)实际上是有效的科学计数法,表示0。// 因此,这个检查主要是为了排除像0123e4这样的字符串。return false;}// 如果通过了所有检查,则认为是有效的科学计数法格式return true;}// 如果不匹配正则表达式,则不是有效的科学计数法格式return false;}
}

        然而,上面的代码中有一个额外的检查,它试图排除以0开头的数字部分(除非它是0.xxx的形式)。这个检查实际上是不必要的,并且可能会导致一些有效的科学计数法字符串被拒绝(比如0.001E3,它实际上等于1)。在科学计数法中,数字部分可以是以0开头的,只要它不是一个单独的0(除非后面跟着小数点)。

        因此,可以简化IsScientificNotation方法,去掉那个额外的检查,只保留正则表达式的匹配:

static bool IsScientificNotation(string input)
{string pattern = @"^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?$";Regex regex = new Regex(pattern);return regex.IsMatch(input);
}

这样,上面的代码将正确地匹配提供的示例1.229266E+01以及其他有效的科学计数法字符串。

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

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

相关文章

SSL,TLS协议分析

写在前面 工作中总是会接触到https协议,也知道其使用了ssl,tls协议。但对其细节并不是十分的清楚。所以,就希望通过这篇文章让自己和读者朋友们都能对这方面知识有更清晰的理解。 1:tls/ssl协议的工作原理 1.1:设计的…

STM32 I2C通信外设

单片机学习! 目录 前言 一、I2C外设简介 1.1 硬件I2C外设 1.2 硬件I2C功能 1.2.1 多主机模型 1.2.2 7位地址和10位地址的模式 1.2.3 通讯速度 1.2.4 支持DMA 1.2.5 兼容SMBus协议 1.2.6 芯片型号资源 二、I2C框图 2.1 引脚 2.2 SDA数据控制 2.3 SCL时…

新型大数据架构之湖仓一体(Lakehouse)架构特性说明——Lakehouse 架构(一)

文章目录 为什么需要新的数据架构?湖仓一体(Lakehouse)——新的大数据架构模式 同时具备数仓与数据湖的优点湖仓一体架构 存储层计算层 湖仓一体特性 单一存储拥有数据仓库的查询性能存算分离开放式架构支持各种数据源类型支持各种使用方式架…

Linux安全防火墙(iptables)配置策略

目录 概念 防火墙的主要功能和特点: 防火墙分类 其他概念 通信五要素: 通信四要素 用户态和内核态 四个表五个链 四个表 五条链 数据包过滤的匹配流程 三种报文流向: 规则内的匹配顺序: iptables iptables命令的格…

十四、Vue 混入(Mixins)详解

文章目录 简介一、基本语法定义混入对象使用混入对象二、混入的数据合并数据合并规则深度合并(对象类型数据)三、混入的生命周期钩子生命周期钩子的合并规则利用生命周期钩子合并的优势四、混入的方法合并方法合并规则调用被覆盖的方法(高级用法)五、混入的应用场景多个组件…

每日AIGC最新进展(80): 重庆大学提出多角色视频生成方法、Adobe提出大视角变化下的人类视频生成、字节跳动提出快速虚拟头像生成方法

Diffusion Models专栏文章汇总:入门与实战 Follow-Your-MultiPose: Tuning-Free Multi-Character Text-to-Video Generation via Pose Guidance 在多角色视频生成的研究中,如何实现文本可编辑和姿态可控的角色生成一直是一个具有挑战性的课题。现有的方法往往只关注单一对象的…

【C++面向对象——类的多态性与虚函数】计算图像面积(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 1. 纯虚函数 一、特点 二、使用场景 三、作用 四、注意事项 五、相关概念对比 2. 抽象类的使用 一、定义与概念 二、使用场景 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务:设计一个矩形类、一个圆形…

STM32 拓展 电源控制

目录 电源控制 电源框图 VDDA供电区域 VDD供电区域 1.8V低电压区域 后备供电区域 电压调节器 上电复位和掉电复位 可编程电压检测器(PVD) 低功耗 睡眠模式(只有CUP(老板)睡眠) 进入睡眠模式 退出睡眠模式 停机(停止)模式(只留核心区域(上班)) 进入停…

c# CodeFirst生成表字段加注释

前置:ORM框架工具使用的FreeSql 背景:开发环境中运行接口,所有的表字段以及备注会自动加上,但是在测试环境时运行就只生成了表,没有把每个字段的注释加上 问题检查: FreeSql CodeFirst 支持将 c# 代码内的注…

Python连接和操作Elasticsearch详细指南

Python连接和操作Elasticsearch详细指南 一、服务器端配置1. 修改 Elasticsearch 配置文件2. 开放防火墙端口 二、本地 Python 连接 Elasticsearch1. 连接 Elasticsearch2. 索引操作3. 文档操作4. 搜索内容5. 聚合查询6. 批量操作 三、注意事项四、故障排除结论 Elasticsearch …

五个不同类型的数据库安装

一、 官方首页下载 打开 MySQL 官方首页,链接为: MySQL 进去社区后选择合适的版本进行安装 安装细节 依图一路next 点击finish结束安装 二、 在线YUM仓库 将该安装包的下载链接在 Linux 操作系统中按照以下命令直接进行下载 三、 二进制本地 通过该链接…

用户界面软件01

Jens Coldewey 著,Tom.X 译 本文中的模式语言逐步深入地探讨用户界面架构的设计,它基于人机工程学,足以形成一套完整的体系。如果你对这方面有兴趣,请参考[Tog92],[Coo95]和[Col95]。 本文不讨论用户界面的布局&…

Android 性能优化:内存优化(实践篇)

1. 前言 前一篇文章Android性能优化:内存优化 (思路篇) 大概梳理了Android 内存原理和优化的必要性及应该如何优化,输出了一套短期和长期内存优化治理的SOP方案。 那么这一篇文章就总结下我最近在做内存优化如何实践的&#xff0…

stm32第一次烧录或者上电运行卡死问题分析

问题描述 单片机烧录代码(刚上电)无法立即运行,必须要复位一次或多次才能运行;跟踪调试会进入HardFault_Handler中断。 问题分析 烧录配置如下图,首先排除配置问题那么该问题就比较让人头大了,理论上&am…

Unity中 Xlua使用整理(一)

1.安装: 从GitHub上下载Xlua源码 Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. (github.com) 下载Xlua压缩包,并解压将Aseet文件夹中的Xlua和Plugins文件夹复制到Unit…

git理解记录

文章目录 1. 背景2. 基本概念3. 日常工作流程4. 其他常见操作4.1 merge合并操作4.2 tag打标签操作4.3 remoute远程操作4.4 撤销修改 git理解记录 1. 背景 git作为分布式版本控制系统,开源且免费,相比svn集中式版本控制系统存在速度快(HEAD指针指向某次co…

js复制数据到剪切板

方法一: 在下面方法传入你想要复制的字符 ,直接调用该方法就好 export function copyText(text: string) {if (navigator.clipboard) {// clipboard api 复制navigator.clipboard.writeText(text)} else {const textarea document.createElement(text…

服务器Ubuntu22.04系统下 ollama的详细部署安装和搭配open_webui使用

服务器Ubuntu22.04系统下 ollama的详细部署安装和搭配open_webui使用 一、ubuntu和docker基本环境配置1.更新包列表:2. 安装docker依赖3. 添加docker密钥4.添加阿里云docker软件源5.安装docker6.安装完成docker测试7. docker配置国内镜像源 二、安装英伟达显卡驱动1…

LInux单机安装Redis

1. 安装gee工具包 由于Redis是基于c语言编写的所以安装的时候需要先安装gee以及gcc的依赖,yum云用不了可以看一下这个 linux 替换yum源镜像_更换yum镜像源-CSDN博客 yum install -y gcc tcl 2. 添加redis的压缩包 3. 上传到Linux 上传到 /usr/local/src 目录、这个目录一般用于…

西门子200smart存储卡作用

最近维修设备时,遇到一个问题,设备PLC是200smart SR20,PLC程序需要修改某个程序段,由于手里没有源程序,联系厂家后,厂家发了一段程序,后缀是.s7s。通过查询官网资料,其中S7_JOB.S7S为脚本任务&a…