我正在将一本XML格式的书转换成EPUB。它有67章和1000多个脚注。我发现在Epub中创建脚注的好方法是将注释的内容移动到末尾的列表中,并在注释调用者和结尾处的元素之间来回链接。我在Textwrangler中使用Grep搜索将标签更改为正确的html标签。但是,我想不出一种方法来使用Grep查找文本片段并将其移动到文档的末尾?有没有其他简单的方法来使用Textwrangler或其他文本编辑器?我假设Applescript可以与Textwrangler链接为我做(我使用OS X),但我不知道如何。我不是程序员,所以我更喜欢尽可能简单的解决方案,只要不是手动剪切和粘贴:)
答案 0 :(得分:1)
此脚本使用grep模式查找字符串并将其附加到文档末尾的新行
tell application "TextWrangler"
tell text of window 1
set cL to count lines
select first line -- to start at the top
repeat
-- start from the selection, selection change when the "find" command found the search pattern in the document
set r to find "[\\d]+" options {search mode:grep} with selecting match -- change "[\\d]+" to your search pattern
if found of r then
if startLine of found object of r > cL then exit repeat -- the end of the original document, to not search in the appended lines
set contents of found object of r to "" -- delete the found text
make line with data found text of r -- append a new line + the found text
else
exit repeat
end if
end repeat
end tell
end tell
重要:在AppleScript脚本中,您必须转义模式中的反斜杠。
示例:AppleScript中 TextWrangler 的此模式[\d]*\t
必须为[\\d]*\\t
更新以解决另一个问题。
此脚本搜索<li id="......"
,如果它不唯一,则添加后缀 - &gt; - 和整数。
set uniq_ID_names to {}
tell application "TextWrangler"
tell text of window 1
select first line -- to start at the top
repeat
-- start from the selection, selection change when the "find" command found the search pattern in the document
set r to find "<li id=\"[^\"]+" options {search mode:grep} with selecting match -- get character from <li id=" until the next double quote character
if not found of r then exit repeat
set t to found text of r
if t is in uniq_ID_names then -- same ID's name
set i to 1
repeat -- add suffix to the found text
set t2 to t & "-" & i
if t2 is not in uniq_ID_names then
add suffix (found object of r) suffix ("-" & i)
set t to t2
exit repeat
end if
set i to i + 1
end repeat
end if
set end of uniq_ID_names to t
end repeat
end tell
end tell