如何减少 livecode 的时间
How to reduce time in livecode
我需要保留一些文本,所以我在编辑之前从滚动字段中获取该文本并存储在数组和变量中,在我编辑之后,我在那些地方恢复文本。我在这个过程中使用了这个代码,它工作正常但花了很多时间。如何减少那个时间?
command Store
global ELine,m,EELine,myEELength,myELength,EQLine,myEQLength,EALine,myEALength,ESLine,ESuLine,myESLength,myESuLength,TSLine,myTSLength,stsLine,sta,stab,Tta
global wPreserve,woPreserve,endwPreserve,cnt
put the text of field "MytextField" into woPreserve
put the number of lines of woPreserve into cnt
--answer cnt
repeat with x = 1 to the number of lines of woPreserve
if line x of woPreserve contains "begin{thebibliography}" then
put line x to cnt in woPreserve into endwPreserve
delete line x+1 to cnt in field "MytextField"
--answer endwPreserve
end if
end repeat
repeat with x = 1 to the number of lines of woPreserve
if line x of woPreserve contains "begin{document}" then
put line 1 to x-1 in woPreserve into wPreserve
delete line 1 to x-1 in field "MytextField"
--answer wPreserve
end if
end repeat
set the caseSensitive to true
put "" into ELine
replace "$" with "{\XXdollarXX}" in field "MytextField"
put the text of field "MytextField" into Tvar
--put replaceText(Tvar,"[a-z,A-Z]$"
put replaceText(Tvar,"\n","^EOL") into field "MytextField"
put the text of field "MytextField" into Tvar
put the number of paragraphs in Tvar into ppara
repeat with p = 0 to ppara
put paragraph p of Tvar into q
--put replaceText(q,"\s\n","") after aa
put replaceText(q,"\n","") after aa
end repeat
--put aa into field "MytextField"
replace "^EOL\begin{Seqnarray}" with cr & "\begin{Seqnarray}" in field "MytextField"
replace "\end{Seqnarray}^EOL" with "\end{Seqnarray}" & cr in field "MytextField"
replace "^EOL\begin{subequation}" with cr & "\begin{subequation}" in field "MytextField"
replace "\end{subequation}^EOL" with "\end{subequation}" & cr in field "MytextField"
replace "^EOL\begin{equation}" with cr & "\begin{equation}" in field "MytextField"
replace "\end{equation}^EOL" with "\end{equation}" & cr in field "MytextField"
replace "^EOL\begin{eqnarray}" with cr & "\begin{eqnarray}" in field "MytextField"
replace "\end{eqnarray}^EOL" with "\end{eqnarray}" & cr in field "MytextField"
replace "^EOL\begin{align}" with cr & "\begin{align}" in field "MytextField"
replace "\end{align}^EOL" with "\end{align}" & cr in field "MytextField"
replace "^EOL\begin{Table}" with cr & "\begin{Table}" in field "MytextField"
replace "\end{Table}^EOL" with "\end{Table}" & cr in field "MytextField"
replace "^EOL\begin{table}" with cr & "\begin{table}" in field "MytextField"
replace "\end{table}^EOL" with "\end{table}" & cr in field "MytextField"
--replace "\begin{Seqnarray}" with cr & "\begin{Seqnarray}" in field "MytextField"
replace "\end{Seqnarray}" with "\end{Seqnarray}" & cr in field "MytextField"
--replace "^EOL\begin{subequation}" with cr & "\begin{subequation}" in field "MytextField"
replace "\end{subequation}" with "\end{subequation}" & cr in field "MytextField"
--replace "^EOL\begin{equation}" with cr & "\begin{equation}" in field "MytextField"
replace "\end{equation}" with "\end{equation}" & cr in field "MytextField"
--replace "^EOL\begin{eqnarray}" with cr & "\begin{eqnarray}" in field "MytextField"
replace "\end{eqnarray}" with "\end{eqnarray}" & cr in field "MytextField"
--replace "^EOL\begin{align}" with cr & "\begin{align}" in field "MytextField"
replace "\end{align}" with "\end{align}" in field "MytextField"
--put the text of field "MytextField" into aa
put 0 into k
put 0 into z
put 0 into n
put 0 into j
put 0 into l
put 0 into Ta
put 0 into stab
put the text of field "MytextField" into aa
repeat for each lines ET in aa
if ET contains "\begin{subequation}" then
add 1 to k
put "-----SubDisplayEquation-----" & k into es
replace ET with es in field "MytextField"
put ET & cr after ESLine
end if
if ET contains "\begin{Seqnarray}" then
add 1 to z
put "-----SDisplayEquation-----" & z into eSu
replace ET with eSu in field "MytextField"
put ET & cr after ESuLine
end if
if ET contains "\begin{equation}" then
add 1 to n
put "-----DisplayEquation-----" & n into eo
replace ET with eo in field "MytextField"
put ET & cr after EELine
end if
if ET contains "\begin{eqnarray}" then
add 1 to j
put "-----EqnarryDisplayEquation-----" & j into er
replace ET with er in field "MytextField"
put ET & cr after EQLine
end if
if ET contains "\begin{align}" then
add 1 to l
put "-----AlignDisplayEquation-----" & l into ea
replace ET with ea in field "MytextField"
put ET & cr after EALine
end if
if ET contains "\begin{Table}" then
add 1 to Ta
put "-----Table-----" & Ta into Tta
replace ET with Tta in field "MytextField"
put ET & cr after TSLine
end if
if ET contains "\begin{table}" then
add 1 to stab
put "-----_table_-----" & stab into sta
replace ET with sta in field "MytextField"
put ET & cr after stsLine
end if
end repeat
put the text of field "MytextField" into ss
put "" into yy
put 0 into tmp
repeat with i = 1 to the number of chars in ss
if char i of ss contains "$" then
add 1 to tmp
if tmp = 1 then
put "^SOE" & CR & char i of ss after yy
else
put char i of ss & CR & "^EOE" after yy
put 0 into tmp
end if
else
put char i of ss after yy
end if
end repeat
put yy into the field "MytextField"
put 0 into m
repeat for each lines iT in yy
if iT contains "$" then
add 1 to m
put "---In_Line_Equation---" & m into so
replace IT with so in field "MytextField"
put iT & cr after ELine
end if
end repeat
--answer ELine
put 0 into m
put the text of field "MytextField" into SSEE
put replaceText(SSEE, "\^SOE\n","") into SSEE
put replaceText(SSEE, "\n\^EOE","") into SSEE
put replaceText(SSEE, "\^EOL",cr) into SSEE
--answer SSEE
put SSEE into field "MytextField"
end Store
command Restore
global ELine,m,EELine,myEELength,myELength,EQLine,myEQLength,EALine,myEALength,ESLine,ESuLine,myESLength,myESuLength,TSLine,myTSLength,stsLine,sta,stab,mystsLength
global wPreserve,x,woPreserve,endwPreserve,cnt
put cr into line 0 of field "MytextField"
put wPreserve into line 0 of field "MytextField"
put "" into wPreserve
put cr into last line of field "MytextField"
put endwPreserve into last line of field "MytextField"
put "" into endwPreserve
put the number of lines of ESLine into myESLength
split ESLine by cr
put myESLength into k
repeat with i = myESLength down to 1
put "-----SubDisplayEquation-----" & k into es
replace es with ESLine[i] in field "MytextField"
subtract 1 from k
end repeat
put the number of lines of ESuLine into myESuLength
split ESuLine by cr
put myESuLength into z
repeat with i = myESuLength down to 1
put "-----SDisplayEquation-----" & z into eSu
replace eSu with ESuLine[i] in field "MytextField"
subtract 1 from z
end repeat
put the number of lines of EELine into myEELength
split EELine by cr
put myEELength into n
repeat with i = myEELength down to 1
put "-----DisplayEquation-----" & n into eo
replace eo with EELine[i] in field "MytextField"
subtract 1 from n
end repeat
put the number of lines of EQLine into myEQLength
split EQLine by cr
put myEQLength into j
repeat with i = myEQLength down to 1
put "-----EqnarryDisplayEquation-----" & j into er
replace er with EQLine[i] in field "MytextField"
subtract 1 from j
end repeat
put the number of lines of EALine into myEALength
split EALine by cr
put myEALength into l
repeat with i = myEALength down to 1
put "-----AlignDisplayEquation-----" & l into ea
replace ea with EALine[i] in field "MytextField"
subtract 1 from l
end repeat
put the number of lines of TSLine into myTSLength
split TSLine by cr
put myTSLength into Ts
repeat with i = myTSLength down to 1
put "-----Table-----" & Ts into Tta
replace Tta with TSLine[i] in field "MytextField"
subtract 1 from Ts
end repeat
put the number of lines of stsLine into mystsLength
split stsLine by cr
put mystsLength into stab
repeat with i = mystsLength down to 1
put "-----_table_-----" & stab into sta
replace sta with stsLine[i] in field "MytextField"
subtract 1 from stab
end repeat
put the number of lines of ELine into myELength
split ELine by cr
put myELength into m
repeat with i = myELength down to 1
put "---In_Line_Equation---" & m into so
replace so with ELine[i] in field "MytextField"
subtract 1 from m
end repeat
replace "^EOL" with cr in field "MytextField"
replace "$" with "{\XXdollarXX}" in field "MytextField"
end Restore
有没有其他方法可以做到这一点?。
看起来您正在对一个字段中的所有文本进行替换。您应该先将文本内容放入变量中,在那里进行所有替换,然后将变量的内容放回字段中。
我需要保留一些文本,所以我在编辑之前从滚动字段中获取该文本并存储在数组和变量中,在我编辑之后,我在那些地方恢复文本。我在这个过程中使用了这个代码,它工作正常但花了很多时间。如何减少那个时间?
command Store
global ELine,m,EELine,myEELength,myELength,EQLine,myEQLength,EALine,myEALength,ESLine,ESuLine,myESLength,myESuLength,TSLine,myTSLength,stsLine,sta,stab,Tta
global wPreserve,woPreserve,endwPreserve,cnt
put the text of field "MytextField" into woPreserve
put the number of lines of woPreserve into cnt
--answer cnt
repeat with x = 1 to the number of lines of woPreserve
if line x of woPreserve contains "begin{thebibliography}" then
put line x to cnt in woPreserve into endwPreserve
delete line x+1 to cnt in field "MytextField"
--answer endwPreserve
end if
end repeat
repeat with x = 1 to the number of lines of woPreserve
if line x of woPreserve contains "begin{document}" then
put line 1 to x-1 in woPreserve into wPreserve
delete line 1 to x-1 in field "MytextField"
--answer wPreserve
end if
end repeat
set the caseSensitive to true
put "" into ELine
replace "$" with "{\XXdollarXX}" in field "MytextField"
put the text of field "MytextField" into Tvar
--put replaceText(Tvar,"[a-z,A-Z]$"
put replaceText(Tvar,"\n","^EOL") into field "MytextField"
put the text of field "MytextField" into Tvar
put the number of paragraphs in Tvar into ppara
repeat with p = 0 to ppara
put paragraph p of Tvar into q
--put replaceText(q,"\s\n","") after aa
put replaceText(q,"\n","") after aa
end repeat
--put aa into field "MytextField"
replace "^EOL\begin{Seqnarray}" with cr & "\begin{Seqnarray}" in field "MytextField"
replace "\end{Seqnarray}^EOL" with "\end{Seqnarray}" & cr in field "MytextField"
replace "^EOL\begin{subequation}" with cr & "\begin{subequation}" in field "MytextField"
replace "\end{subequation}^EOL" with "\end{subequation}" & cr in field "MytextField"
replace "^EOL\begin{equation}" with cr & "\begin{equation}" in field "MytextField"
replace "\end{equation}^EOL" with "\end{equation}" & cr in field "MytextField"
replace "^EOL\begin{eqnarray}" with cr & "\begin{eqnarray}" in field "MytextField"
replace "\end{eqnarray}^EOL" with "\end{eqnarray}" & cr in field "MytextField"
replace "^EOL\begin{align}" with cr & "\begin{align}" in field "MytextField"
replace "\end{align}^EOL" with "\end{align}" & cr in field "MytextField"
replace "^EOL\begin{Table}" with cr & "\begin{Table}" in field "MytextField"
replace "\end{Table}^EOL" with "\end{Table}" & cr in field "MytextField"
replace "^EOL\begin{table}" with cr & "\begin{table}" in field "MytextField"
replace "\end{table}^EOL" with "\end{table}" & cr in field "MytextField"
--replace "\begin{Seqnarray}" with cr & "\begin{Seqnarray}" in field "MytextField"
replace "\end{Seqnarray}" with "\end{Seqnarray}" & cr in field "MytextField"
--replace "^EOL\begin{subequation}" with cr & "\begin{subequation}" in field "MytextField"
replace "\end{subequation}" with "\end{subequation}" & cr in field "MytextField"
--replace "^EOL\begin{equation}" with cr & "\begin{equation}" in field "MytextField"
replace "\end{equation}" with "\end{equation}" & cr in field "MytextField"
--replace "^EOL\begin{eqnarray}" with cr & "\begin{eqnarray}" in field "MytextField"
replace "\end{eqnarray}" with "\end{eqnarray}" & cr in field "MytextField"
--replace "^EOL\begin{align}" with cr & "\begin{align}" in field "MytextField"
replace "\end{align}" with "\end{align}" in field "MytextField"
--put the text of field "MytextField" into aa
put 0 into k
put 0 into z
put 0 into n
put 0 into j
put 0 into l
put 0 into Ta
put 0 into stab
put the text of field "MytextField" into aa
repeat for each lines ET in aa
if ET contains "\begin{subequation}" then
add 1 to k
put "-----SubDisplayEquation-----" & k into es
replace ET with es in field "MytextField"
put ET & cr after ESLine
end if
if ET contains "\begin{Seqnarray}" then
add 1 to z
put "-----SDisplayEquation-----" & z into eSu
replace ET with eSu in field "MytextField"
put ET & cr after ESuLine
end if
if ET contains "\begin{equation}" then
add 1 to n
put "-----DisplayEquation-----" & n into eo
replace ET with eo in field "MytextField"
put ET & cr after EELine
end if
if ET contains "\begin{eqnarray}" then
add 1 to j
put "-----EqnarryDisplayEquation-----" & j into er
replace ET with er in field "MytextField"
put ET & cr after EQLine
end if
if ET contains "\begin{align}" then
add 1 to l
put "-----AlignDisplayEquation-----" & l into ea
replace ET with ea in field "MytextField"
put ET & cr after EALine
end if
if ET contains "\begin{Table}" then
add 1 to Ta
put "-----Table-----" & Ta into Tta
replace ET with Tta in field "MytextField"
put ET & cr after TSLine
end if
if ET contains "\begin{table}" then
add 1 to stab
put "-----_table_-----" & stab into sta
replace ET with sta in field "MytextField"
put ET & cr after stsLine
end if
end repeat
put the text of field "MytextField" into ss
put "" into yy
put 0 into tmp
repeat with i = 1 to the number of chars in ss
if char i of ss contains "$" then
add 1 to tmp
if tmp = 1 then
put "^SOE" & CR & char i of ss after yy
else
put char i of ss & CR & "^EOE" after yy
put 0 into tmp
end if
else
put char i of ss after yy
end if
end repeat
put yy into the field "MytextField"
put 0 into m
repeat for each lines iT in yy
if iT contains "$" then
add 1 to m
put "---In_Line_Equation---" & m into so
replace IT with so in field "MytextField"
put iT & cr after ELine
end if
end repeat
--answer ELine
put 0 into m
put the text of field "MytextField" into SSEE
put replaceText(SSEE, "\^SOE\n","") into SSEE
put replaceText(SSEE, "\n\^EOE","") into SSEE
put replaceText(SSEE, "\^EOL",cr) into SSEE
--answer SSEE
put SSEE into field "MytextField"
end Store
command Restore
global ELine,m,EELine,myEELength,myELength,EQLine,myEQLength,EALine,myEALength,ESLine,ESuLine,myESLength,myESuLength,TSLine,myTSLength,stsLine,sta,stab,mystsLength
global wPreserve,x,woPreserve,endwPreserve,cnt
put cr into line 0 of field "MytextField"
put wPreserve into line 0 of field "MytextField"
put "" into wPreserve
put cr into last line of field "MytextField"
put endwPreserve into last line of field "MytextField"
put "" into endwPreserve
put the number of lines of ESLine into myESLength
split ESLine by cr
put myESLength into k
repeat with i = myESLength down to 1
put "-----SubDisplayEquation-----" & k into es
replace es with ESLine[i] in field "MytextField"
subtract 1 from k
end repeat
put the number of lines of ESuLine into myESuLength
split ESuLine by cr
put myESuLength into z
repeat with i = myESuLength down to 1
put "-----SDisplayEquation-----" & z into eSu
replace eSu with ESuLine[i] in field "MytextField"
subtract 1 from z
end repeat
put the number of lines of EELine into myEELength
split EELine by cr
put myEELength into n
repeat with i = myEELength down to 1
put "-----DisplayEquation-----" & n into eo
replace eo with EELine[i] in field "MytextField"
subtract 1 from n
end repeat
put the number of lines of EQLine into myEQLength
split EQLine by cr
put myEQLength into j
repeat with i = myEQLength down to 1
put "-----EqnarryDisplayEquation-----" & j into er
replace er with EQLine[i] in field "MytextField"
subtract 1 from j
end repeat
put the number of lines of EALine into myEALength
split EALine by cr
put myEALength into l
repeat with i = myEALength down to 1
put "-----AlignDisplayEquation-----" & l into ea
replace ea with EALine[i] in field "MytextField"
subtract 1 from l
end repeat
put the number of lines of TSLine into myTSLength
split TSLine by cr
put myTSLength into Ts
repeat with i = myTSLength down to 1
put "-----Table-----" & Ts into Tta
replace Tta with TSLine[i] in field "MytextField"
subtract 1 from Ts
end repeat
put the number of lines of stsLine into mystsLength
split stsLine by cr
put mystsLength into stab
repeat with i = mystsLength down to 1
put "-----_table_-----" & stab into sta
replace sta with stsLine[i] in field "MytextField"
subtract 1 from stab
end repeat
put the number of lines of ELine into myELength
split ELine by cr
put myELength into m
repeat with i = myELength down to 1
put "---In_Line_Equation---" & m into so
replace so with ELine[i] in field "MytextField"
subtract 1 from m
end repeat
replace "^EOL" with cr in field "MytextField"
replace "$" with "{\XXdollarXX}" in field "MytextField"
end Restore
有没有其他方法可以做到这一点?。
看起来您正在对一个字段中的所有文本进行替换。您应该先将文本内容放入变量中,在那里进行所有替换,然后将变量的内容放回字段中。