作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在编写一个程序,该程序将检查文件中的一行,并查看该行中是否包含美国州以及拼写是否正确。我目前正在为一个州工作。我想看看美国所有州是否都在排队之列。
这是我的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
var r = new Regex(@"\bArizona\b", RegexOptions.IgnoreCase);
string[] lines = File.ReadAllLines(@"C:\sampledata.dat");
foreach (string s in lines)
{
var m = r.Match(s);
Console.WriteLine(m.Success); // false
Console.WriteLine(s);
Console.ReadLine();
}
}
}
}
本质上我想做一些类似的事情var r = new Regex(@"\bAll US States.txt\b", RegexOptions.IgnoreCase);
最佳答案
如果您想查看是否包含任何状态,您基本上可以使用 string.Join()
方法来生成与其中任何一个匹配的表达式:
// Read your lines
var states = File.ReadAllLines(@"C:\states.txt");
// Build a pipe delimited string (e.g. State1|State2|State3 ...) to use an a Regex with necessary boundaries
// leading and trailing boundaries
var pattern = $@"\b{(string.Join("\b|\b", states))}\b";
// Now use that pattern to build a Regex to check against (using C# string interpolation)
var regex = new Regex(pattern, RegexOptions.IgnoreCase);
// Now loop through your data here and check each line
string[] lines = File.ReadAllLines(@"C:\sampledata.dat");
foreach (string s in lines)
{
var m = regex.Match(s);
Console.WriteLine(m.Success); // false
Console.WriteLine(s);
Console.ReadLine();
}
此外,如果您无法使用字符串插值来构建模式,只需使用旧的 string.Format()
即可。方法:
var pattern = string.Format("\b{0}\b", string.Join("\b|\b", states));
关于c# - 如何将字符串数组中的值传递到 C# 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940838/
我是一名优秀的程序员,十分优秀!