gpt4 book ai didi

c# - 匹配包含未知文本的字符串

转载 作者:行者123 更新时间:2023-12-03 23:10:20 27 4
gpt4 key购买 nike

我有一个正在调用的 Web 服务,该服务返回错误消息列表。然后,我对此列表进行 foreach,并根据配置文件中的错误消息文本进行匹配。但是,从 Web 服务返回的某些错误消息包含一些未知数据,例如日期或数字。

如何使用 C# 匹配此文本?我是否必须拆分字符串并尝试匹配每个单独的单词?在执行“.Contains(...)”时,如何处理未知变量,例如日期或数字?

这是一个例子:

Web 服务列表可能包含以下内容

"This is an example static error message"
"Another example static error message"
"This is an error message for employee 2"
"This is an error message dated 11/2/2017"
"Employee 3 does not work here anymore"

在我的配置文件中,我有以下内容:

<add errorText="This is an example static error message" field="N/A" />
<add errorText="Another example static error message" field="N/A" />
<add errorText="This is another example for employee **X**" field="N/A" />
<add errorText="This is an error message dated **X**" field="N/A" />
<add errorText="Employee **X** does not work here anymore" field="N/A" />

最佳答案

从您的配置文件中,您可以构建正则表达式,如下所示:

String configString = GetConfigString(3); // "This is another example for employee **X**"
String regexPattern = String.Concat("^", configString.Replace("**X**", ".+"), "$");

Boolean match = Regex.IsMatch("This is another example for employee John", regexPattern);

然后使用这样的正则表达式来匹配您的文本字符串。

您还可以在应用程序启动后立即构建所有正则表达式模式并将它们缓存在某处以供将来使用:

String configStrings = GetConfigStrings();
String[] regexPatterns = new String[configStrings.Length];

for (Int32 i = 0; i < configStrings.Length; ++i)
regexPatterns[i] = String.Concat("^", configStrings[i].Replace("**X**", ".+"), "$");

由于您的框架内可能存在混合类型的字符串替换,因此坚持使用 .+ 标记是更好的选择。

当然,最终取决于您构建一个配置文件解析器并实现 GetConfigStringGetConfigStrings 方法(或仅一个,具体取决于您想要使用的方法) )。

关于c# - 匹配包含未知文本的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47521106/

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