我有这样的:检查线路有参数否则跳过行
if (line.Contains("nosyn_name_last_exact:(qxq"))
{
var temp = line.Split(FirstSeparator, StringSplitOptions.RemoveEmptyEntries)[1];
if (temp.Length > 1)
{
var result2 = temp.Split(SecondSeparator,
StringSplitOptions.RemoveEmptyEntries)[0];
//result2[1].Split(')')[0].Dump();
listNames.Add(result2);
}
//Console.WriteLine(result2);
}
,这是输出:
Console.WriteLine("Url " + "\t\t\t\tLast Name");
int index = -1;
foreach (var key in times.Keys)
{
if (key.Contains("Url"))
{
index++;
Console.WriteLine("{0}: {1} {2}", key, times[key].TotalSeconds, "\t\t" + listNames[index]);
}
else
{
Console.WriteLine("{0}: {1}", key, times[key].TotalSeconds);
}
}
,这是我用的台词:
23.9.66:80/solr_3.6/wiewaswie_live/select/ qt=edismax_nosyn_a2aperson&q=(johanna huisman)&fq={!tag%3Dalldoctypes}doc_type:1&fq=date_main:[18980000 TO 19773112]&facet.query={!ex%3Dalldoctypes}doc_type:3 AND (b_public:1 OR fk_account:(16209514))&facet.query={!ex%3Dalldoctypes}doc_type:2 AND (b_public:1 OR fk_account:(16209514))&spellcheck=true&spellcheck.count=-3&start=230&sort=name_last asc, score desc&omitHeader=true
2014-08-25 15:36:32,246 DEV avqih5cp053gloqfdtd5iaez 0 Q . http://10.123.9.66:80/solr_3.6/wiewaswie_live/select/ qt=edismax_nosyn_a2aperson&q=(Pieter van der Meulen)&fq={!tag%3Dalldoctypes}doc_type:1&fq=(fk_province:1)&facet.query={!ex%3Dalldoctypes}doc_type:3 AND (b_public:1)&facet.query={!ex%3Dalldoctypes}doc_type:2 AND (b_public:1)&spellcheck=true&spellcheck.count=-3&start=20&sort=name_last asc, score desc&omitHeader=true
2014-08-25 15:36:32,324 DEV avqih5cp053gloqfdtd5iaez 89 R O http://10.123.9.66:80/solr_3.6/wiewaswie_live/select/ qt=edismax_nosyn_a2aperson&q=(Pieter van der Meulen)&fq={!tag%3Dalldoctypes}doc_type:1&fq=(fk_province:1)&facet.query={!ex%3Dalldoctypes}doc_type:3 AND (b_public:1)&facet.query={!ex%3Dalldoctypes}doc_type:2 AND (b_public:1)&spellcheck=true&spellcheck.count=-3&start=20&sort=name_last asc, score desc&omitHeader=true
2014-08-25 15:36:32,698 DEV 1eltnkbwb1na30pvxp5nsaxi 0 Q . http://10.123.9.66:80/solr_3.6/wiewaswie_live/select/ qt=edismax_nosyn_a2aperson&q=(willem breedenoord)&fq={!tag%3Dalldoctypes}doc_type:1&facet.query={!ex%3Dalldoctypes}doc_type:3 AND (b_public:1)&facet.query={!ex%3Dalldoctypes}doc_type:2 AND (b_public:1)&spellcheck=true&spellcheck.count=-3&start=0&sort=name_last asc, score desc&omitHeader=true
2014-08-25 15:36:32,730 DEV 1eltnkbwb1na30pvxp5nsaxi 35 R O http://10.123.9.66:80/solr_3.6/wiewaswie_live/select/ qt=edismax_nosyn_a2aperson&q=(willem breedenoord)&fq={!tag%3Dalldoctypes}doc_type:1&facet.query={!ex%3Dalldoctypes}doc_type:3 AND (b_public:1)&facet.query={!ex%3Dalldoctypes}doc_type:2 AND (b_public:1)&spellcheck=true&spellcheck.count=-3&start=0&sort=name_last asc, score desc&omitHeader=true
2014-08-25 15:36:32,792 DEV 0pqbpdeurbtlp312ysf12nu1 2321 R O http://10.123.9.66:80/solr_3.6/wiewaswie_live/select/ qt=standard_a2aperson&q=*:*&fq=(nosyn_name_last_exact:(qxqbroekhuijzenqxq))&spellcheck.q=(qxqbroekhuijzenqxq)&fq={!tag%3Dalldoctypes}doc_type:1&fq=date_main:[17000101 TO 18503112]&facet.query={!ex%3Dalldoctypes}doc_type:3 AND (b_public:1)&facet.query={!ex%3Dalldoctypes}doc_type:2 AND (b_public:1)&spellcheck=true&spellcheck.count=-3&start=0&sort=name_last asc, score desc&omitHeader=true
所以,如果一行包含参数:nosyn_name_last_exact:(qxq
然后它必须显示结果,否则滑动该行。但是我得到错误:索引超出了数组的范围。这段代码:
catch (Exception e)
{
Console.WriteLine("An error occured while attempting to access the source file at {0}", sourceFile);
}
OKE,如果我这样做是这样的:
var source = "2014-08-25 15:36:32,730 DEV 1eltnkbwb1na30pvxp5nsaxi 35 R O http://10.123.9.66:80/solr_3.6/wiewaswie_live/select/ qt=edismax_nosyn_a2aperson&q=(willem breedenoord)&fq={!tag%3Dalldoctypes}doc_type:1&facet.query={!ex%3Dalldoctypes}doc_type:3 AND (b_public:1)&facet.query={!ex%3Dalldoctypes}doc_type:2 AND (b_public:1)&spellcheck=true&spellcheck.count=-3&start=0&sort=name_last asc, score desc&omitHeader=true";
string[] FirstSeparator = new string[] { "nosyn_name_last_exact:(qxq" };
string[] SecondSeparator = new string[] { "qxq)" };
var temp = source.Split(FirstSeparator, StringSplitOptions.RemoveEmptyEntries)[1];
var result = temp.Split(SecondSeparator, StringSplitOptions.RemoveEmptyEntries)[0];
result.Dump("Result: ");
我得到的错误:
指数数组的边界之外。
,但如果我这样做是这样的:
var source = "2014-08-25 15:36:32,792 DEV 0pqbpdeurbtlp312ysf12nu1 2321 R O http://10.123.9.66:80/solr_3.6/wiewaswie_live/select/ qt=standard_a2aperson&q=*:*&fq=(nosyn_name_last_exact:(qxqbroekhuijzenqxq))&spellcheck.q=(qxqbroekhuijzenqxq)&fq={!tag%3Dalldoctypes}doc_type:1&fq=date_main:[17000101 TO 18503112]&facet.query={!ex%3Dalldoctypes}doc_type:3 AND (b_public:1)&facet.query={!ex%3Dalldoctypes}doc_type:2 AND (b_public:1)&spellcheck=true&spellcheck.count=-3&start=0&sort=name_last asc, score desc&omitHeader=true";
string[] FirstSeparator = new string[] { "nosyn_name_last_exact:(qxq" };
string[] SecondSeparator = new string[] { "qxq)" };
var temp = source.Split(FirstSeparator, StringSplitOptions.RemoveEmptyEntries)[1];
var result = temp.Split(SecondSeparator, StringSplitOptions.RemoveEmptyEntries)[0];
result.Dump("Result: ");
那么结果将是: 结果:
broekhuijzen
但是我对文本文件更多的线,因此,如果没有找到,然后跳过。
奥凯,我现在有这样的:
var source = "2014-08-25 15:36:32,792 DEV 0pqbpdeurbtlp312ysf12nu1 2321 R O http://10.123.9.66:80/solr_3.6/wiewaswie_live/select/ qt=standard_a2aperson&q=*:*&fq=(nosyn_name_last_exact:(qxqbroekhuijzenqxq))&spellcheck.q=(qxqbroekhuijzenqxq)&fq={!tag%3Dalldoctypes}doc_type:1&fq=date_main:[17000101 TO 18503112]&facet.query={!ex%3Dalldoctypes}doc_type:3 AND (b_public:1)&facet.query={!ex%3Dalldoctypes}doc_type:2 AND (b_public:1)&spellcheck=true&spellcheck.count=-3&start=0&sort=name_last asc, score desc&omitHeader=true";
string[] FirstSeparator = new string[] { "nosyn_name_last_exact:(qxq" };
string[] SecondSeparator = new string[] { "qxq)" };
var temp = source.Split(FirstSeparator, StringSplitOptions.RemoveEmptyEntries);
if(temp.Length > 1)
{
temp[1].Split(')')[0].Dump();
//var result = temp.Split(SecondSeparator, StringSplitOptions.RemoveEmptyEntries)[0];
//result.Dump("Result: ");
}
,结果是:broekhuijzenqxq。但它必须是:broekhuijzen,所以没有qxq
我只是不明白为什么它放在这里错了:
foreach (var key in times.Keys)
{
if (key.Contains("Url"))
{
index++;
Console.WriteLine("{0}:{1} {2}",key, times[key].TotalSeconds, "\t\t" + listNames[index]);
}
else
{
Console.WriteLine("{0}:{1}",key, times[key].TotalSeconds);
}
}
它计数9 - 这样是正确的,但我仍然得到错误BYT这line:listNames [index]); -
类型“System.ArgumentOutOfRangeException”未处理的异常在mscorlib.dll发生
其他信息:索引超出范围。必须是非负数且小于集合的大小。
有什么尝试?好像你在瞄准一个不存在的文件 – Noctis 2014-08-31 09:44:10
?当然我有文件,那不是问题。 const string sourceFile = @“testSolar.txt”;但问题是,当文件中不存在属性nosyn_name_last_exact时,它不会扫描该行 – savantKing 2014-08-31 09:47:46
不太清楚您如何使用什么以及您期望的位置。什么是'times',它与'listNames'(如果有的话)有什么关系,等等。 – Noctis 2014-08-31 10:08:50