gpt4 book ai didi

javascript - 如何使用 javascript 在 InDesign GREP 查找/更改中将 $2 值存储到变量

转载 作者:行者123 更新时间:2023-11-30 17:29:27 24 4
gpt4 key购买 nike

我正在编写 InDesign javascript,它会进行 GREP 查找/更改 - 实际上现在我只需要查找一些文本并将 grep 在 $2 值中找到的内容保存到我的脚本变量 - 我的脚本的其他所有内容我都知道该怎么做 -所以我现在需要做的就是找出如何获得这 $2

简单的例子:

app.findGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = "(\\d)+(\\d)";
found = app.activeDocument.findGrep();
...
found[0].contents; // this store entire string with both digits and plus, and I need only $2 value (second digit in this case)

最佳答案

InDesign 的 JS 界面不会为您做那件事,它只会返回完全匹配。

contents是一个简单的 Javascript 字符串(不再是原生 InDesign 文本),您可以使用 Javascript 自己的 match功能:

..
app.findGrepPreferences.findWhat = "(\\d)+(\\d)";
found = app.activeDocument.findGrep();
m = found[0].contents.match (/(\d)+(\d)/);
alert (m.join('\n'));

注意不要将 InDesign 的 GREP 语法与 Javascript 的语法混合使用。特别是特殊字符,例如 ~<是 ID 扩展,在 JS 中会失败。


请注意,对于“2014”的输入,这将返回

2014
1
4

第一行是完整匹配项(等于 $0 ),1$14$2 .这很可能不是您所期望的。由于您反复将“组 1”与 + 匹配,每个下一个数字替换最后一个找到的数字(期待最后一个)。你的意思可能是类似

(\d+)(\d)

会返回

2014
201
4

关于javascript - 如何使用 javascript 在 InDesign GREP 查找/更改中将 $2 值存储到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23458091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com