【发布时间】:2021-03-02 14:11:00
【问题描述】:
我是一名实习生,我正在用 C# 开发一个解决方案,它允许我从 excel 文件中检索单元格中的字符串。检索到此字符串后,必须使用正则表达式将此字符串的元素分成 2 个其他列表(示例和参考)。 这意味着如果这个字符串的某个元素对应于正则表达式,则必须在“样本”列表中发送,如果不对应,则必须在“参考列表”中发送。
几天来,我一直在尝试解决此问题,但我无法显示元素应与正则表达式对应的“示例”列表。无论是显示整个列表还是什么都不显示,它都无法正常工作。
字符串示例:
示例 1:
QC4 1000 ppm ; C-191108-S-0095 ; C-191108-S-0095 ; QC4 100 ppm ; QC4 1000 ppm ; Et 500 ppm ; Et 1000 ppm ; Et 2000 ppm ;
示例2:
; C-210104-S-117 2 ; C-210104-S-118 1 ; C-210104-S-118 2 ; Ref 100ppm QC4 ; Ref 1000ppm QC4 ;
这是我的代码:
public static (List<string> sample, List<string> reference) parse()
{
string imput = ReadExcel();
List<string> sample = new List<string>();
List<string> reference = new List<string>();
string pattern = @"C-[0-9][0-9][0-9][0-9][0-9][0-9]-S-[0-9][0-9][0-9][0-9] ;";
Regex rgx = new Regex(pattern);
Regex delim = new Regex(@"\s*,\s*");
foreach (string term in delim.Split(imput))
{
if (rgx.IsMatch(term))
{
sample.Add(term);
sample.ForEach(Console.WriteLine);
}
else
{
reference.Add(term);
}
}
return (sample, reference);
}
我不知道如何解决它。你能帮帮我吗?
感谢您的理解。
【问题讨论】:
-
示例是“样本”还是“参考”?
-
你的意思是用
\s*;\s*分割吗? -
我给出的例子,是开头的excel文件的初始字符串的例子。我必须将此字符串拆分为两个列表示例,并通过与正则表达式匹配来引用。
-
在 stackoverflow 的另一篇文章中,有人建议我在使用 "\s*;\s*" 进行正则表达式匹配之前先拆分,我不知道这是否是最佳选择。
-
但在代码中,您使用逗号
\s*,\s*而不是分号;