我仍试图了解KeyValuePairs
,但我相信这个想法应该起作用。在我的代码中,它搜索一个大字符串并提取2个子字符串。一个子字符串(请记住引号之间的值变化)是类似于Identity="EDN\username"
另一个子字符串是类似于FrameworkSiteID="Desoto"
所以我想在将它们添加到列表之前将这些字符串组合在一起,但这里是我的问题.. 登录下面的字符串是我需要在SQL语句中用来选择SQLServer中的记录的字符串的唯一字段,字符串是我需要与登录字符串对齐的字符串(以及来自SQLServer的所有列和行数据)当我输出这个文本文件。我应该使登录字符串KEYS和framew字符串VALUES?如果是的话,我该怎么做?希望这是有道理的。我还可以解释如果需要的话使用列表<KeyValuePair>存储键和值
Regex reg = new Regex("Identity=\"[^\"]*\"");
Regex reg1 = new Regex("FrameworkSiteID=\"[^\"]*\"");
foreach (FileInfo file in Files)
{
string line = "";
using (StreamReader sr = new StreamReader(file.FullName))
{
while (!String.IsNullOrEmpty(line = sr.ReadLine()))
{
if (line.ToUpper().Contains("IDENTITY="))
{
string login = reg.Match(line).Groups[0].Value;
string framew = reg1.Match(line).Groups[0].Value; //added
IdentityLines.Add(new KeyValuePair<string, string>(file.Name, login + " " + framew));
//This is probably not what I need
}
else
{
IdentityLines.Add(new KeyValuePair<string, string>(file.Name, "NO LOGIN"));
}
}
嗨乔恩 - 我不认为它是重要的,我使用文件名作为关键,我不认为会有任何空白行。我拥有的是数千行XML日志,每行都有这些巨大的字符串。我只需要提取或解析用户标识(Identity)和框架siteid的位置。这有帮助吗?问题在于用户可能会多次出现在日志中,因此一旦添加完成,我需要跳过它。我怎样才能使用你最后的功能呢? – Josh 2010-08-13 12:56:31
无关紧要的关键不是关键。它确实听起来像你想用用户名作为关键,并使用我给出的最后一个例子,但替换登录。添加与'登录[登录] = framew',这将添加如果没有一个和覆盖if有每个用户输入一次的结果。 我会让它应付空白行,除非空行实际上意味着它应该停止在那一点;它会更安全。 – 2010-08-13 13:11:04
感谢乔恩,我认为这工作。现在我已经将userid和frameworksiteid存储在名为logins的Dictionary中了,如何循环这个dictonary并移除特殊字符?我有一个函数,它接受一个字符串并删除特殊字符,但我只需要知道如何设置循环。 – Josh 2010-08-13 13:20:57