我使用EF Core 1.2在C#中使用以下代码,我在那里阅读textarea的输入并检查每一行是否与我的某个模式匹配。 在检查了一行后,我试图设置一个状态,告诉我它是否与一个模式匹配。
现在我想将这些行临时加上它的每个状态保存到一个列表中,这样我就可以将这个列表传递给我的视图,我希望在表格中显示每一行及其状态。
我的问题是如何保存每一行及其状态?我想过使用词典,但我不确定这是否是解决我问题的最佳方案。
using (StringReader reader = new StringReader(Request.Form["ExpressionTextarea"].ToString()))
{
string line = string.Empty;
do
{
line = reader.ReadLine();
if (line != null)
{
string state = CheckStringLine(line);
/**** HOW TO SAVE EACH LINE PLUS ITS STATE TEMPORARILY?
//IDictionary<string, string> dictionary = new Dictionary<string, string>();
//dictionary.Add(line, status);
****/
}
} while (line != null);
//***PASSING MY LIST TO MY VIEW
return View(MYLIST);
}
//Checks if line matches a pattern
public string CheckStringLine(string Line)
{
string state = "";
//Pattern1: (Ein | Eine) A ist (ein | eine) B.
string pattern1 = @"^(?<Artikel1>(Ein|Eine){1})\s{1}(?<Second>[A-Z]{1}[a-zäöüß]{1,})\s{1}ist\s{1}(?<Artikel2>(eine|ein){1})\s(?<Fourth>[A-Z]{1}[a-zäöüß]{1,})\.$";
//Pattern2: (Ein | Eine) A (oder (ein | eine) B)+ ist (ein | eine) C.
string pattern2 = @"^(?<First>(Ein|Eine){1})\s{1}(?<Second>[A-Z]{1}[a-zäöüß]{1,})(\s{1}oder\s{1}(?<OptionalArtikel>(ein|eine){1})\s{1}(?<OptionalBegriff>[A-Z]{1}[a-zäöüß]{1,}))+(\s{1})ist\s{1}(?<Third>(eine|ein){1})\s(?<Fourth>[A-Z]{1}[a-zäöüß]{1,})\.$";
var match1 = Regex.Match(Line, pattern1);
var match2 = Regex.Match(Line, pattern2);
if (match1.Success)
{
state = "This Line is using pattern1";
return state;
}
if (match2.Success)
{
state = "This Line is using pattern2";
return state;
}
state = "No matches";
return state;
}
答案 0 :(得分:2)
使用library(reinstallr)
package.dir <- getwd()
base_path <- normalizePath(package.dir)
files <- list.files(file.path(base_path, "R"), full.names = TRUE)
packages <- unique(reinstallr:::scan_for_packages(files)$package)
packages
适用于您需要键/值对的情况,我在此理解您只想存储内容。此外,如果您想保留订单,它将无法运作。
最简单的方法是使用包含Dictionary
的{{1}},如果您不想为此创建自己的类型。
List
然后,当您需要它们时,您可以从列表中获取元组,并从Tuple
获取行,从var list = new List<Tuple<string, string>>();
list.Add(new Tuple<string, string>(line, state));
获取该行。
答案 1 :(得分:0)
您可以使用任何内存数据结构来存储您的状态。 HashTable将比其他数据结构快得多,但它不是通用的。你也可以使用Dictionary,这是通用的。