gpt4 book ai didi

c# - 如何将字符串数组中的值传递到 C# 中的正则表达式

转载 作者:行者123 更新时间:2023-12-03 19:33:23 24 4
gpt4 key购买 nike

我目前正在编写一个程序,该程序将检查文件中的一行,并查看该行中是否包含美国州以及拼写是否正确。我目前正在为一个州工作。我想看看美国所有州是否都在排队之列。

这是我的代码

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com