通过 AppleScript 中的虚线递增?

Increment through dashed lines in 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 时,它失败了:

A child marker seems to be missing.

代码:

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 中,我如何正确递增数字序列?

在你的条件语句中,你使用相同的条件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