由于不熟悉编码,因此无法调整下面的代码。我需要超链接“#”和“#”之后的所有内容,直到出现“空格”为止。 “#”之后的数字可以是变量,并且最多可以有五个数字。
以下示例:
var doc = app.activeDocument;
// get URL
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '(?i)(?<=# )(https?|www)\\S+\\>=';
var mURL = doc.findGrep();
// get Texte
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '#';
var mSource = doc.findGrep();
for (var k = 0; k <mSource.length; k++){
var mHyperlinkDestination = doc.hyperlinkURLDestinations.add(mURL[k].contents);
var mHyperlinkTextSource = doc.hyperlinkTextSources.add(mSource[k]);
mHyperlink = doc.hyperlinks.add(mHyperlinkTextSource,mHyperlinkDestination);
mHyperlink.name =mURL[k].contents;
mHyperlink.visible=false;
}
//remove URL text
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '(?i)(?<=# )(https?|www)\\S+\\>=';
app.changeGrepPreferences.changeTo = '';
doc.changeGrep();
答案 0 :(得分:0)
这应该有效:
var doc = app.activeDocument;
// get URL
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '\\s(https?|www)(://).+$';
var mURL = doc.findGrep();
// get Texte
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '#\\d{1,5}';
var mSource = doc.findGrep();
for (var k = 0; k <mSource.length; k++){
var mHyperlinkDestination = doc.hyperlinkURLDestinations.add(mURL[k].contents);
var mHyperlinkTextSource = doc.hyperlinkTextSources.add(mSource[k]);
mHyperlink = doc.hyperlinks.add(mHyperlinkTextSource,mHyperlinkDestination);
mHyperlink.name =mURL[k].contents + '_' + k;
mHyperlink.visible=false;
}
//remove URL text
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '(?<= )(https?|www)(://).+$';
app.changeGrepPreferences.changeTo = '';
doc.changeGrep();
总体来说,只是一些小的调整
1)更改URL的grep搜索
2)更改了grep搜索的数字(“#”后跟1-5位数字)
3)两个超链接不能具有相同的名称。我更改了该行的编号,您可能想要进行调整以满足自己的需要,您可以做的一件事就是使用mSource[k].contents + '_' + mURL[k].contents
,尽管如果重复的话,也会遇到相同的问题。