【问题标题】:InDesign Grep: Changing sentence beginnings to UppercaseInDesign Grep:将句子开头更改为大写
【发布时间】:2014-04-26 16:28:29
【问题描述】:

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

到目前为止,我可以使用这个 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。

【问题讨论】:

    标签: adobe-indesign grep-indesign


    【解决方案1】:

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

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

    从结束开始“索引”,而不是从开始。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 2019-11-23
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多