c # поиск в списке двух строк в одной строке - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть список с именем simple, и все его объекты находятся в форме ниже:

Tag:  textbook - sacred texts   Rec Id: 10011095 
Tag:  advocacy  Rec Id: 10037815 
Tag:  advocacy  Rec Id: 10043396 
Tag:  advocacy  Rec Id: 10037795 
Tag:  advocacy  Rec Id: 10031437 
Tag:  advocacy  Rec Id: 10035721 
Tag:  advocacy  Rec Id: 10024853

и у меня есть второй список под названием fullList с такими объектами, как:

10055853    What's the Matter with the Internet? by Mark Poster      academic    1       0,083

10055853    What's the Matter with the Internet? by Mark Poster      computers       1       0,083

10055853    What's the Matter with the Internet? by Mark Poster      internet    2       0,167

Я разделил каждую строку списка simpe, чтобы получить две строки. Первый из них имеет слово (а) после «Tag:» и перед «Rec Id:», а второй после «Rec ID».

Example: tagGB  = textbook - sacred texts
rec_idGB = 10011095

И затем я хочу найти, не существует ли какой-либо строки (объекта) из списка fullList, который содержит ОБА (в той же строке), что две строки.

Я пробовал это:

 foreach (String line in nonZeroList)
        {

            foreach (String line2 in Gblist)
            {

            rec_idGB = line.Split('\t')[0].Substring(4).Trim();
            tagGB = line.Split('\t')[2].Substring(7).Trim();

            if (line.Contains(rec_idGB) == false && line.Contains(tagGB) == false)
            {

            }


        }
    }

но я получаю много строк, которые не содержат этих строк. Я хочу получить в качестве результата только rec_idGB и tagGB, которые не ОБА в одной строке полного списка. Есть предложения?

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

Я хочу получить в качестве результата только rec_idGB и tagGB, которые не ОБА в одной строке полного списка.

То есть вы хотите, чтобы все строки в simpleList не могли быть сопоставлены ни с одной строкой в ​​fullList? (Или вы хотите, чтобы каждая строка в fullList получала все строки в simpleList, которые не совпадают? I догадываюсь нет.)

foreach (string line in simpleList)
{
    string rec_idGB = line.Split('\t')[0].Substring(4).Trim();
    string tagGB = line.Split('\t')[2].Substring(7).Trim();
    bool thereIsAMatch = false;
    foreach (string line2 in fullList)
    {
        if (line2.Contains(rec_idGB) && line2.Contains(tagGB))
        {
            thereIsAMatch = true;
            break;
        }
    }
    if(!thereIsAMatch)
    {
        // This is what you want?
    }
}
0 голосов
/ 28 ноября 2011

Разве вы не должны сравнивать с line2 вместо line?Ваш анализ из line и затем проверка, содержится ли он в line, из которого вы только что его проанализировали.

Например:

 if (line2.Contains(rec_idGB) == false && line2.Contains(tagGB) == false)

Или это может быть другой способвокруг ... вы хотите разобрать с line2 и сравнить с line, не совсем уверен.

0 голосов
/ 28 ноября 2011

Попробуйте мою ветку об этом: фильтрация значений из строки после / перед определенным словом в c #

Решением было использование регулярных выражений

Не совсем та же проблема, но я думаю, что вы найдете решение легко, как я

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...