c# - 正则表达式无法识别字符串 C#
问题描述
我正在使用正则表达式类。我试图弄清楚一个字符串在另一个字符串中有多少个常见匹配项。
情况如下:
MainWindow.DetailBLL.Name = "Top Senders By Total Threat Messages"
String detailName = MainWindow.DetailBLL.Name;
摘自:
MainWindow = Window Class
DetailBLL = Class
Name = Variable
public String Name
{
get { return _Name; }
set { _Name = value; }
}
CharacterReplacement(openedFile) = "Incoming Mail Domains Top Senders By Total Threat Messages"
String fileName = CharacterReplacement(openedFile);
摘自:
OpenFileDialog openedFile = new OpenFileDialog();
Incoming_Mail_Domains_Top_Senders_by_Graymail_Messages_RawData.csv
private String CharacterReplacement(OpenFileDialog file)
{
String input = file.SafeFileName;
String output = input.Replace("_", " ").Replace("RawData", " ").Replace("by", "By").Replace(".csv", " ");
//output: "Incoming Mail Domains Top Senders By Graymail Messages"
return output;
}
此方法采用文件名(.csv 文件的名称)并将其转换为可读字符串,并按所示返回。
正则表达式类的使用:
String source = detailName;
String searchPattern = fileName;
第一次尝试:不起作用
int count = Regex.Matches(searchPattern, source).Count;
或不起作用
int count = Regex.Matches(fileName, detailName).Count;
if (count > 0)
{
System.Windows.MessageBox.Show("Match!");
}
第二次尝试:不起作用
foreach (Match match in Regex.Matches(fileName, detailName))
或不起作用
foreach (Match match in Regex.Matches(searchPattern, source))
{
System.Windows.MessageBox.Show("Matches: " + counter++);
}
我注意到了一些事情,Regex 不是这样工作的。变量没有识别:
String source = detailName;
String searchPattern = fileName;
仅当变量如下时才有效:
String source = "Top Senders By Total Threat Messages";
String searchPattern = "Incoming Mail Domains Top Senders By Total Threat Messages";
但是,这对我不起作用,我需要它们评估为隐式(非文字)字符串,而不是显式(文字)字符串,导致变量每次都发生变化。
请问有办法吗?
解决方案
好吧,首先-您可能不需要正则表达式(我仍然建议阅读有关正则表达式的信息https://www.regular-expressions.info/)。
我想您需要计算两个字符串中包含多少个单词。您的评论两个问题都没有说明您是想计算同一个单词两次还是一次。
在这里您可以找到基本示例:
using System;
using System.Linq;
namespace SearchLinq
{
class Program
{
static void Main(string[] args)
{
string source = "Top Senders By Total Threat Messages";
string find = "Incoming Mail Domains Top Senders By Total Threat Messages";
// first possible solution
int result = 0;
foreach (string word in find.Split(' '))
{
if (source.Contains(word))
{
result++;
}
}
Console.WriteLine(result);
// second possible solution
int result2 = find.Split(' ').Count(w => source.Contains(w));
Console.WriteLine(result2);
}
}
}
推荐阅读
- c# - 对于 .NET Core 中的“依赖关系中的依赖关系”,您应该遵循什么模式?
- java - 在 S3 存储桶上为冰川存储类设置数据检索选项
- postgresql - 迁移以使用默认值填充 slug
- python - 使用 pop() 删除多个项目时的问题
- popup - 弹出窗口打开时鼠标滞后
- maven - 如何在不使用 docker 和 gradle 的情况下实现带有最终电车的 Spring 微服务?
- ios - iOS TCP/IP over USB 与 linux 端
- python - python并行没有空间不能泡菜
- java - 使用 CName 从 Java 连接到加密的 ElastiCache Redis
- python - 重建 opencv-python 轮子安装程序