2015-06-05 3 views
0

Как сократить время по этому коду? TE - это переменная, которая содержит мой текст (содержит более 20000 строк). и s - мое поисковое слово.Поиск слова в текстовом файле

repeat with x = 0 to the number of lines in TE 
     if line x of TE contains s then 
     put line x-1 of TE & cr & line x of TE & cr & line x+1 of TE & cr & cr after dataarray 
     end if 
    end repeat 

Этот код работает нормально, но требуется слишком много времени. Как сократить время?

ответ

0

Старайтесь избегать синтаксиса repeat with как можно больше. Вместо этого используйте repeat for each синтаксис:

put 0 into myLineNr 
repeat for each line myLine in myData 
    // update counter 
    add 1 to myLineNr 
    if myLine contains mySearchString then 
    // store data in new variable 
    put line myLineNr - 1 of myData & cr & myLine & cr & line myLineNr + 1 of myData & cr & cr after myNewData 
    end if 
end repeat 

Я изменил сценарий, чтобы дубликаты строк. Для этого требуется счетчик, но использование счетчика все же выполняется быстрее, чем использование структуры управления repeat with.

+2

Если в myData есть повторяющиеся строки, функция lineOffset найдет только первую, если вы не используете дополнительный третий параметр, linesToSkip. – Devin

+1

Да, это правда Девин. Я обновлю код, когда у меня есть момент. – Mark

+1

Сценарий обновлен – Mark

Смежные вопросы