2017-09-26 3 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に来るとき、それはで失敗します。

子マーカーが存在しないことのようです。

コード:AppleScriptでは

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 

どのように私はきちんと数字のシーケンスをインクリメントすることができますか?あなたの条件文で

答えて

0

、あなたが同じ条件if parentNum is equal to parentCountを使用し、第2の条件文が動作しない、スクリプトは、これら2つの条件文で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 
関連する問題