2015-06-05 308 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 

我已經更改了腳本以允許重複的行。這需要一個計數器,但使用計數器的速度仍然快於使用控制結構。

+2

如果myData中存在重複的行,lineOffset函數將僅查找第一個行,除非使用可選的第三個參數linesToSkip。 – Devin

+1

是的,這是真的德文。當我有一點時我會更新代碼。 – Mark

+1

腳本現在已經更新 – Mark

相關問題