Поиск 1 значения в 10 файлах

  • Автор темы Автор темы bstshell
  • Дата начала Дата начала

bstshell

Client
Регистрация
03.06.2015
Сообщения
56
Реакции
4
Баллы
8
Привет друзья!
Никак не могу придумать как реализовать в постере одну задачку.

Задача в следующем:
Есть 10 txt-файлов содержащих цифры, записанные в столбик. Некоторые числа в файлах могут совпадать.
Нужно проверить каждое число на его наличие во всех файлах. Если содержится в 7 и более файлах то не трогать, если в меньшем количестве файлов то удалить это число из всех файлов.

Буду признателен за наводку как это реализовать. спасибо.
 
Код:
Развернуть Свернуть Копировать
var nomber = project.Variables["Nom"].Value; //Переменная, которую ищем в списках
var list = project.Lists["list"]; //создать временный список в проекте
String[] subDirectories;
subDirectories = System.IO.Directory.GetFiles(@"D:\новый папка"); //путь к папке с файлами
int count = subDirectories.Length;
int check = 0;
for (int i = 0; i < count; i++)
{
    list.Bind(subDirectories[i]);
    if(list.Contains(nomber))
    {
        check++;
    }
}

if (check>7)
{
    return "не трогать";
}
return "потрогать";
 
Спасибо что отозвались! Буду думать теперь как это прикрутить) Проблема в том что каждый файл лежит в отдельной папке..)
 
Можно тогда добавить еще один список, в который до выполнения кода вкладываете все свои пути к файлам. И в коде вместо массива использовать этот список. В остальном всё так же.
 
Код:
Развернуть Свернуть Копировать
var nomber = project.Variables["ID"].Value; //Переменная, которую ищем в списках
var list = project.Lists["list"]; //создать временный список в проекте
var file_dirs = project.Lists["files"]; //список с полными путями к файлам
String[] file_dirs;
int count = file_dirs.Length;
int check = 0;
for (int i = 0; i < count; i++)
{
    list.Bind(file_dirs[i]);
    if(list.Contains(nomber))
    {
        check++;
    }
}
if (check>1)
{
    return "не трогать";
}
return "потрогать";

У меня получилось слепить вот это, но оно не работает) Что не так?

Сильно ногами не пинайте, в программировании я ноль
 
Код:
Развернуть Свернуть Копировать
var nomber = project.Variables["ID"].Value; //Переменная, которую ищем в списках
var list = project.Lists["list"]; //создать временный список в проекте
var file_dirs = project.Lists["files"]; //список с полными путями к файлам
String[] file_dirs;
int count = file_dirs.Length;
int check = 0;
for (int i = 0; i < count; i++)
{
    list.Bind(file_dirs[i]);
    if(list.Contains(nomber))
    {
        check++;
    }
}
if (check>1)
{
    return "не трогать";
}
return "потрогать";

У меня получилось слепить вот это, но оно не работает) Что не так?

Сильно ногами не пинайте, в программировании я ноль
Так попробуйте
Код:
Развернуть Свернуть Копировать
var nomber = project.Variables["ID"].Value; //Переменная, которую ищем в списках
var list = project.Lists["list"]; //создать временный список в проекте
var file_dirs = project.Lists["files"]; //список с полными путями к файлам
int count = file_dirs.Count;
int check = 0;
for (int i = 0; i < count; i++)
{
    list.Bind(file_dirs[i]);
    if(list.Contains(nomber))
    {
        check++;
    }
}
if (check>1)
{
    return "не трогать";
}
return "потрогать";
 
Этот код берет данные только из 1 файла...
 
Наводку, как вы и просили вам дали верную.
Перед этим стандартными экшенами можно в цикле привязывать по очереди все файлы к списку1, добавлять все данные к списку2
Потом список2 уже использовать в сниппете
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)