2017-09-26 138 views
1

我試圖檢查一個準確的計數值,但我遇到了步進過程的問題。鑑於提取:在AppleScript中通過虛線遞增?

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

在你的條件語句,您可以使用相同的條件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