首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#如何使用Regex.IsMatch检查每一行

c#如何使用Regex.IsMatch检查每一行
EN

Stack Overflow用户
提问于 2013-08-12 15:01:24
回答 2查看 342关注 0票数 3

我使用new Regex("(?m)^\S+ [A-Z]{1,3}$").IsMatch(sStringToCheck)检查多行字符串。

我的问题是,它似乎只验证了字符串的最后一行。

这份清单通过:

  • 美国广播公司-12345-DEF A
  • ABC-12345-DEF A 123
  • 美国广播公司-12345-DEF A

这个列表失败了:

  • 美国广播公司-12345-DEF A
  • 美国广播公司-12345-DEF A
  • ABC-12345-DEF A 123

但是,我希望两者都失败,因为每个都包含一个不匹配的行。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-12 15:09:49

代码语言:javascript
复制
bool match = sStringToCheck
            .Split(new string[] {Environment.NewLine}, StringSplitOptions.None)
            .Any(line => new Regex(@"^\S+ [A-Z]{1,3}$").IsMatch(line));

会检查每一行。这就是你的目标吗?

票数 5
EN

Stack Overflow用户

发布于 2013-08-12 15:23:19

琼斯的回答是一种更好的方法,但为了彻底起见,一种非LINQ的方法是对每一行进行迭代,或者用你的总体答案来计算结果:

代码语言:javascript
复制
bool match = false;
foreach(string s in sStringToCheck.Split(new string[]{Environment.NewLine}, StringSplitOptions.None)){
    match = match | new Regex("(?m)^\S+ [A-Z]{1,3}$").IsMatch(s);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18190376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档