C# 为什么要用StartsWith而不是Substring进行字符串匹配?

article/2025/9/22 22:38:47

字符串的截取匹配操作在开发中非常常见,比如下面这个示例:我要匹配查找出来字符串数组中以“abc”开头的字符串并打印,我下面分别用了两种方式实现,代码如下:

using System;namespace ConsoleApp23
{class Program{static void Main(string[] args){string[] strs = new string[] { "abc123" , "abc456" ,"ab123","a12345" };//方法1foreach (var str in strs){if (str.Substring(0, 3) == "abc"){Console.WriteLine(str);}}Console.WriteLine();//方法2 foreach (var str in strs){if (str.StartsWith("abc")){Console.WriteLine(str);}}Console.ReadKey();}}
}

运行结果如下:

364d1a19f45f675379f36151e9de46cc.png

诚然,两种方法都输出了正确的结果。

那么既然,两种方式都能实现,这两种方法有没有什么区别呢?当然有的,而且大多数时候,一个老练的程序员都会用StartsWith而不是Substring,为什么呢?

往下看,我把数据源修改下:

static void Main(string[] args){string[] strs = new string[] { "abc123" , "abc456" ,"ab123","a12345" ,"abc","ab"};//方法1foreach (var str in strs){if (str.Substring(0, 3) == "abc"){Console.WriteLine(str);}}Console.WriteLine();//方法2 foreach (var str in strs){if (str.StartsWith("abc")){Console.WriteLine(str);}}Console.ReadKey();}

运行后,方法一直接崩了,但是方法2则可以正确运行出来结果

72f64c164d6d946404f1577710a5077c.png

看一下Substring的用法解释:startIndex 加 length 指示不在此实例内的位置。- 或 - startIndex 或 length 小于零。,所以当字符串小于你要截取的长度时,你如果没用try catch去捕获异常,代码就崩溃了.

//// 摘要://     从此实例检索子字符串。子字符串从指定的字符位置开始且具有指定的长度。//// 参数://   startIndex://     此实例中子字符串的起始字符位置(从零开始)。////   length://     子字符串中的字符数。//// 返回结果://     与此实例中在 length 处开头、长度为 startIndex 的子字符串等效的一个字符串;如果 System.String.Empty 等于此实例的长度且//     startIndex 为零,则为 length。//// 异常://   T:System.ArgumentOutOfRangeException://     startIndex 加 length 指示不在此实例内的位置。- 或 - startIndex 或 length 小于零。[SecuritySafeCritical]public String Substring(int startIndex, int length);

所以,我们需要慎用Substring,如果非要用,一定需要进行异常处理。


http://chatgpt.dhexx.cn/article/DA7uRXc2.shtml

相关文章

C# 为什么高手喜欢用StartsWith而不是Substring进行字符串匹配?

字符串的截取匹配操作在开发中非常常见,比如下面这个示例:我要匹配查找出来字符串数组中以“abc”开头的字符串并打印,我下面分别用了两种方式实现,代码如下: using System;namespace ConsoleApp23 {class Program{sta…

startsWith(),endsWith()的作用和用法

startsWith(),endsWith()的作用,用法,判断字符串a是不是以字符串b开头或结尾 Java代码 if(a.startsWith(b)) //判断字符串a 是不是以字符串b开头. Java代码 if(a.endsWith(b)) //判断字符串a 是不是以字符串b结尾. 一个demo测试 Java…

[PYTHON] python中startswith函数用法

一、当不确定python中某一函数是做什么用的可以进入函数里面分析它的源码 大致意思就是:如果prefix在S中以start开头,以end结尾,返回结果为True,否则返回False 由上得知,其语法如下: S.startswith(prefix[,…

推荐两个漂亮的编程字体

【摘要】推荐两个漂亮的编程字体1. Inconsolata号称最好看的编程字体。2. YaHei Consolas Hybrid中英文混合,是微软专为编程做制作的字体,很优雅很强大。 1. Inconsolata 号称最好看的编程字体。在个别编辑器下中文的显示会有bug(比如笔者用…

编程常用字体Consolas、Fira Code、Source Code Pro

编程时方便查看,且中文符号与英文符号区别大,便于排错 1、Consolas 一种等宽字体、属于最常用的编码字体下载地址 参考图: 2、Fira Code 一种专为代码排版优化的等宽字体,基于 Fira Mono 等宽字体的一个扩展,主要特点…

10个不错的编程等宽字体

1. Source Code Pro Adobe 在发布首款开源字体 Source Sans Pro 后,2012年9月又发布了 Source Code Pro 字体集,它是一款非常适合程序员阅读的等宽字体,适用于 Linux/Unix、Mac OS X 和 Windows 系统,由 Paul D. Hunt 设计&…

学编程必备:3 大编程字体!让你在编程的时候原地起飞!

前言 日复一日的编写代码,有没有感到审美疲劳? 对于编码的我们,一个赏心悦目的字体,可以愉悦身心。 编程字体,需要的是审美感不疲劳,更主要的是能显示出清晰的字体效果。 比如 [‘i’, ‘1’, ‘l’] 与…

适合matlab的编程字体“YAHEI CONSOLAS HYBRID”-下载+安装

“适合matlab的编程字体“YAHEI CONSOLAS HYBRID”-下载安装 前言下载YAHEI CONSOLAS HYBRID安装步骤在MATLAB安装该字体 前言 matlab预设的字体及字号可能不符合大多数国人的使用习惯,YAHEI CONSOLAS HYBRID字体是一款无衬线字体,是很适合程序员使用的…

vscode编程字体设置与修改

vscode编程字体设置与修改 在vocode上写代码,不会向平常一样写出如下符号 这里介绍一下怎么设置,并且使用vocode官方推荐的字体FiraCode 首先 进入https://github.com/tonsky/FiraCode下载文件包,下载到本地后,进入里面的ttf文…

QT设置编程字体

现在记录一下自己思路或者一些常用的知识点,这样以后自己忘记了可以很快查找翻阅一下,可以当个备忘录。同时如果这些东西对其他人有帮助的话,也是特别好的,也会让自己有成就感,给自己更多的前进动力。 这里搜索了很多资…

c语言编程用什么字体,10 款最适合编程的字体

编程需要什么样的字体?什么样的字体适合编程?首先字体是要免费的!其次这种字体能够轻松的区分0O并且1lI,避免有用这些字符的混淆而引起程序的bug。还要字体要好看,容易阅读等。 1. Hack Hack 是基于 Bitstream Vera 和…

10大最适合编程的字体,让代码看起来更美更舒服!

现在有事没事就喜欢写写代码的人越来越多了,对于成天盯着屏幕工作的开发人员来说,编程代码可能是每天见得最多的东西了。可是绝大部分人都一直使用编辑器默认的字体,其实,换一套适合自己的编程字体不仅能让代码看得更舒服&#xf…

编程字体推荐

前言 对于编码的我们,一个赏心悦目的字体,可以愉悦身心。 以下是我推荐一波等宽字体,有兴趣的可以装一波。 字体(不分先后) Fira Code 这个字体我用了四年,编码仪式感满满的(逼格)。 效果图 下载 Github:FiraCode Cascadia Co…

分享一些我常用的编程字体

1.前言 可能有的同学已经放假在家了,我也快了。最近不想聊具体的技术了,过年了聊点轻松的东西。但是又不想偏离编程太远,所以我今天聊聊我们常用的一些编程字体。在阅读代码的时候眼睛需要以不同寻常的方式移动(垂直和水平方向&a…

十款最佳编程字体

简评:之前有看到一篇 Fira Code 的介绍。所以今天整理了一些比较流行而且免费的一些字体,各取所需。 以下的屏幕截图均为相同的代码片段,编辑器为 VSCode。使用相同的设置: "editor.fontSize": 14 ▎1. Hack Hack 是基于…

强烈推荐:9 款用起来超爽的编程字体!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 气泡星云 (NGC 7635) (© NASA) Consolas Consolas 是一套等宽字体的字型,属无衬线字体,由 Lucas de Groot 设计,这套字型使用了微软的 ClearType …

vscode最适合编程的 6 种字体

本文已收录编程学习笔记。涵盖PHP、JavaScript、Linux、Golang、MySQL、Redis和开源工具等等相关内容。 作为开发人员,我们一天中的大部分时间都在电脑屏幕前编写代码。 眼睛疲劳(也称为 Asthenopia)可能是一个严重的问题,并且在…

10大最适合编程的字体推荐下载,让代码看起来更美更舒服!

这篇文章是转载的,也不知道人家让不让转载,但是我一骨碌脑儿地都给复制粘贴下来了(老农民思想) 我这里不提供下载,可以到网上去搜一下相关的资源,但是一定注意下载安全。 这里给出参考的原文章地址&#x…

IDEA 中最适合程序员的编程字体

长按识别下方二维码,即可"关注"公众号 每天早晨,干货准时奉上! JetBrains年初的时候推出了一种新字体,即JetBrains Mono,它是专为开发人员设计的。 JetBrains表示: 在当今的大部分时间里&#xf…

你在用哪种编程字体?

哪种字体最适合编程?在本文中,我们将看看各式编辑器所使用的默认字体,考察其他的编程字体以及探讨在评估编程字体时,希望得到什么。 程序员喜欢定制自己的开发环境。他们会安装酷酷的主题,顺手的插件。不过&#xff0c…