0

我的目标是将 Illustrator with AppleScript 的 no break 参数应用于文本框架中的两个单词。

我能够检测到字符串中的不间断空格。然后我需要将 no break 参数应用于字符 202 之后和之前的单词,因为 Illustrator 不支持 no break space

在编辑器中打开此 Scriplet:

set ourText to "Hello my friend Jon<non-breaking-space>Doe."
set findThis to (ASCII character 202)
set MW to words of ourText

repeat with aWord in MW
   if findThis is in aWord then
       set myWord to aWord
       exit repeat
   end if
end repeat

myWord --> 显示:Jon Doe

然后我想在文本框架中搜索“Jon Doe”应用 no break 参数。我在 Illustrator 中手动尝试过,这可行。

4

1 回答 1

0

您的脚本不起作用,因为您正在构建一个单词列表。空格(包括不间断空格)是单词分隔符,因此它们不在您的单词列表 (MW) 中。

如果我们使用不间断空格作为文本项分隔符,它将起作用:

use scripting additions

set theResult to {}
set ourText to "Hello my friends Jon Doe, Jane Doe and Joe Doe!" # Each name contains a no-break space
set findThis to character id 160 # Decimal notation of U+00A0 (no-break space)

set saveTID to AppleScript's text item delimiters
set AppleScript's text item delimiters to findThis # The no-break space
set countTextItems to count of text items of ourText

if countTextItems > 1 then
    repeat with i from 1 to countTextItems - 1
        set end of theResult to word -1 of text item i of ourText & findThis & word 1 of text item (i + 1) of ourText
    end repeat
else
    set theResult to "[no character id " & id of findThis & " found]"
end if

set AppleScript's text item delimiters to linefeed
display dialog theResult as text
set AppleScript's text item delimiters to saveTID

输入(ourText):

你好,我的朋友 Jon[noBreakSpace]Doe、Jane[noBreakSpace]Doe 和 Joe[noBreakSpace]Doe!

输出:

输出


请注意,这将在以下情况下失败

我的朋友 J.[noBreakSpace]Doe

因为我们word在重复循环中使用。

如果您经常遇到此类情况,请用and替换word -1and 。然后输出将仅包含空格周围的两个字符,但对于搜索目的,这仍然足够。word 1text -1text 1

于 2017-12-03T02:34:27.617 回答