将超链接应用于文本的脚本

Script for applying hyperlinks to text

由于不熟悉编码,我在调整下面的代码时遇到了问题。我需要超链接“#”和“#”之后的所有内容,直到 "space"。 “#”后面的数字可以是变量,最多可以有5个数字。

示例如下:

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(); 

这应该有效:

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,但如果您有重复,您将 运行 陷入同样的​​问题.