Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Поиск количества строк в тексте

Ответить
Настройки темы
Разное - Поиск количества строк в тексте

Старожил


Сообщения: 222
Благодарности: 1

Профиль | Отправить PM | Цитировать


Помогите решить такую задачю на C#. Вобщем нужно подсчитать сколько раз встречается заданная строка в какомто файле. Файл нельзя весь грузить в память а только частями или побайтно считывать. Я вроде написал функцию, но проблемма в том что файл читается очень медленно, и поиск не оптимальный. Как решить все это?

Код: Выделить весь код
while(FileRead.Position<FileRead.Length)
                {
                    bool flag = false;
                    char ch=Convert.ToChar(FileRead.ReadByte());
                    if (ch == SearchRequest[0])
                    {
                        for (int i = 1; i < SearchRequest.Length &&
                            FileRead.Position < FileRead.Length; i++)
                            if (SearchRequest[i] != Convert.ToChar(FileRead.ReadByte()))
                            {
                                flag = true;
                                break;
                            }
                    }
                    else
                        flag=true;
                            
                    if(!flag)
                        CounterFind++;
                  }

-------
Подпись, нарушающая правила конференции, отредактирована администратором


Отправлено: 16:36, 14-03-2010

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата DaRiYs:
Файл нельзя весь грузить в память а только частями или побайтно считывать »
Так частями все таки можно? А какими частями? Если можно частями, то достаточно будет выгружать в строковую переменную часть файла через тот же substring, а потом искать вхождения?

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:40, 15-03-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1133
Благодарности: 581

Профиль | Отправить PM | Цитировать


Цитата DaRiYs:
нужно подсчитать сколько раз встречается заданная строка в какомто файле. Файл нельзя весь грузить в память а только частями или побайтно считывать »
Честно сказать C# не знаю, но на Делфи, я бы сделал таким образом:
Пример
Код: Выделить весь код
function SearchSubString(const FileName, SearchString: string): Integer;
var
  txt: TextFile;
  s: string;
  count: Integer;
begin
  count:= 0;
  try
    AssignFile(txt, FileName);
    Reset(txt);
    while not Eof(txt) do
      begin
        Readln(txt, s);
        while Pos(SearchString, s) > 0 do
          begin
            Delete(s, 1, Pos(SearchString, s) + Length(SearchString));
            Inc(count);
          end;
      end;
    Result:= count;
  finally
    CloseFile(txt);
  end;
end;

// Пример использования: SearchSubString('C:\Test.txt', 'Hallo world!!!');
// В результате, фукция вернёт количество Hallo world!!! в файле C:\Test.txt

Функция работает очень быстро, надеюсь, что-то похожее можно и на C#.

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:24, 15-03-2010 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Поиск количества строк в тексте

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Delphi - Определение количества RAM и количества видеопамяти stasmd Программирование и базы данных 17 05-04-2010 13:35
[решено] Работа с html-кодом страницы, поиск и копирование нужных строк Sestrichka AutoIt 14 02-04-2009 16:51
[решено] Получение количества строк в тэге textarea System Failure Вебмастеру 2 02-02-2009 10:59
Подсчет количества лицензий. Zergling Microsoft Windows NT/2000/2003 0 24-04-2007 14:57
замена символа в тексте (PHP)   Casufi Вебмастеру 3 11-04-2003 11:07




 
Переход