C#中怎么匹配字符串
本篇文章为大家展示了C#中怎么匹配字符串,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
C#匹配字符串
大多数重要的正则表达式语言运算符都是非转义的单个字符。转义符 \(单个反斜杠)通知正则表达式分析器反斜杠后面的字符不是运算符。例如,分析器将星号 (*) 视为重复限定符,而将后跟星号的反斜杠 (\*) 视为 Unicode 字符 002A。
使用一般表达式要习惯的一点是,查看像这样怪异的字符序列,但这个序列的工作是非常逻辑化的。转义序列\S表示任何不适空白的字符。*称为数量词,其含义是前面的字符可以重复任意次,包括0次。序列\S*表示任何不适空白的字符。因此,上面的模式匹配于以n开头,以ion结尾的任何单个字。下表中列出的字符转义在正则表达式和替换模式中都会被识别。
表1:特定字符或转义序列
如果要搜索一个元字符,也可以通过带有反斜杠的转义字符来表示。例如,.表示除了换行字符以外的任何字符,而\.表示一个点。
可以把可替换的字符放在方括号中,请求匹配包含这些字符。例如,[1|c]表示字符可以是1或者是c。如果要搜索map或者man,可以使用序列"ma[n|p]"(仅指引号内字符,下面雷同)。在方括号中,也可以制定一个范围,例如"[a-z]"表示所有的小写字母(使用连字号 (-) 允许指定连续字符范围),"[B-F]"表示B到F之间的所有大写字母,"[0-9]"表示一个数字,如果要搜索一个整数(该序列只包含0到9的字符),就可以编写"[0-9]+"(注意,使用+字符表示至少要有这样一个数字,但可以有多个数字,所以9、83和3443等都是匹配的。)
下面看看一般表达式的结果,编写一个实例RegularExpressionsZzy。建立几个一般表达式,显示其结果,让用户了解一下表达式是如何工作的。
该实例的核心是一个方法WriteMatches(),它把MatchCollection中的所有匹配以比较详细的方式显示出来。对于每个匹配,它都会显示该匹配在输入字符串中所在的索引,C#匹配字符串和一个略长的字符串,其中包含输入文本中至多8个外围字符,其中至少有5个字符放在匹配的前面,至多5个字符放在匹配的后面(如果匹配的位置在输入文本的开头或结尾5个字符内,则结果中匹配前后的字符就会少于4个)。换言之,靠近输入文本末尾的匹配应是"and messaging ofd",匹配的前后各有5个字符,但位于输入文本的***一个字上的匹配就应是"g of data",匹配的字后只有一个字符。因为在该字符的后面是字符串的结尾。这个长字符串可以更清楚地表明一般表达式是在什么地方查找到匹配的:
staticvoidWriteMatches(stringtext,MatchCollectionmatches) { Console.WriteLine("Originaltextwas:\n\n"+text+"\n"); Console.WriteLine("No.ofmatches:"+matches.Count); foreach(MatchnextMatchinmatches) { intIndex=nextMatch.Index; stringresult=nextMatch.ToString(); intcharsBefore=(Index<5)?Index:5; intfromEnd=text.Length-Index-result.Length; intcharsAfter=(fromEnd<5)?fromEnd:5; intcharsToDisplay=charsBefore+charsAfter+result.Length; Console.WriteLine("Index:{0},\tString:{1},\t{2}",Index,result, text.Substring(Index-charsBefore,charsToDisplay)); } }
在这个方法中,处理过程是确定在较长的字符串中有多少个字符可以显示,而无需超限输入文本的开头或结尾。注意在Match对象上使用了另一个属性Value,它包含标识该C#匹配字符串,而且,RegularExpressionsZzy只包含名为Find_po,Find_n等的方法,这些方法根据本文执行某些搜索操作。
上述内容就是C#中怎么匹配字符串,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341