我试图检查数值以获得准确的计数,但我对步进过程有疑问。鉴于提取:
1-1
2-1
3-1
4-1
5-1
6-1
7-1
7-2
8-1
9-1
9-2
9-3
9-4
10-1
11-1
12-2 ## intentionally left out 12-1 to throw error
13-1
如何在列表中正确递增并标记是否缺少。当我运行我的脚本时,它会运行7-2
,但当涉及到8-1
时,它会失败并显示:
儿童标记似乎丢失了。
代码:
tell application "BBEdit"
activate
set parentCount to 1
set childCount to 1
set theDoc to text document 1
select insertion point before first character of theDoc
set searchOpt to {search mode:grep, wrap around:false}
repeat
set theNumbers to find "^(\\d{1,4})-(\\d{1,4})" searching in text 1 of theDoc options searchOpt with selecting match
if not found of theNumbers then exit repeat
set parentNum to (grep substitution of "\\1") as number
set childNum to (grep substitution of "\\2") as number
if parentNum is equal to parentCount and childNum is equal to childCount then
set parentCount to parentCount + 1
else if parentNum is equal to parentCount and (childNum + 1) is equal to childCount then
set parentCount to parentCount + 1
set childCount to 1
else
display dialog "missing marker"
end if
end repeat
display dialog "completed check"
end tell
在AppleScript中,如何通过一系列数字正确递增?
答案 0 :(得分:0)
在条件语句中,使用相同的条件if parentNum is equal to parentCount
,第二个条件语句不起作用,因为脚本会增加这两个条件语句中的 parentCount ,并且你的脚本永远不会增加childCount。
使用此脚本:
tell application "BBEdit"
activate
set parentCount to 0
set childCount to 1
set theDoc to text document 1
select insertion point before first character of theDoc
set searchOpt to {search mode:grep, wrap around:false}
repeat
set theNumbers to find "^(\\d{1,4})-(\\d{1,4})" searching in text 1 of theDoc options searchOpt with selecting match
if not found of theNumbers then exit repeat
set parentNum to (grep substitution of "\\1") as number
set childNum to (grep substitution of "\\2") as number
if parentNum = (parentCount + 1) and childNum = 1 then -- if the parentNum increase of 1, the childNum must be 1
set parentCount to parentCount + 1
set childCount to 1 -- so, reset the childCount to 1
else if parentNum = parentCount and childNum = (childCount + 1) then
set childCount to childNum
else
display dialog "missing marker"
set parentCount to parentNum -- start at this value for the next sequence
set childCount to childNum -- start at this value for the next sequence
end if
end repeat
display dialog "completed check"
end tell