0

我对脚本编写相对较新,并且在 InDesign 脚本中,我试图将所有句子的所有首字母都更改为大写(其中许多是小写,因为我从不同的文本源随机生成了 setences)。

到目前为止,我能够使用这个 Grep 表达式找到文本部分:

\.(\s)+\l

我还发现了 Peter Kahrel 在 InDesign Secrets 上分享的这个脚本:

app.findGrepPreferences.findWhat = "^.";
found = app.activeDocument.findGrep();
for (i = 0; i < found.length; i++)
    found[i].characters[0].changecase (ChangecaseMode.lowercase);

但是,当我现在替换 ^. 用我自己的表达式,将小写变为大写,脚本不起作用,这是有道理的,因为我不想更改 findGrep 结果的第一个字符,而是最后一个。但是我怎样才能找到最后一个字符?句子之间的间隔有不同的长度,所以我不能简单地输入 2 而不是 0。

任何帮助将不胜感激!谢谢!

编辑:我正在研究 CS6。

4

1 回答 1

1

您的 GREP 返回以句点开头的匹配项,然后有任意数量的空格(可能包括硬返回),并且始终以一个小写字符结尾。到目前为止,一切都很好。您可以通过以下方式访问最后一个字符(实际上是任何 InDesign 对象集合中的任何最后一项):

found[i].characters[-1].changecase (ChangecaseMode.lowercase);

从结尾而不是从开头“索引” 。

然而!除了句点和空格之外,匹配项中的唯一字符始终是小写字母。所以你可以跳过整个“如何找到正确的索引”的事情,并且可能稍微加快脚本的速度,只需将小写(或者,当你使用它时,大写)应用于整个匹配:

found[i].changecase (ChangecaseMode.lowercase);

因为不可小写的字符不会发生任何事情(我声明这个词表示“具有Unicode定义的小写和大写等效属性)。(或者相反,如果我理解你的目的正确的话。)

于 2014-03-20T20:18:22.423 回答