我有一系列保存为富文本文件的 TextEdit 文档。
第一行是树连字符。
第二行是标题。
第三行是四个连字符。
第三行下方是各种其他样式的文本。
---
Long Descriptive Title Her
----
Various Paragraphs of Text Here
按 Command + A 和 Command + C 将内容复制到剪贴板后,我想使用 Applescript 从剪贴板中删除四个连字符以上的任何内容。
这个 AppleScript 可以做到这一点,但它不会保留样式文本。
如何修改它以保留样式文本,但仍删除不需要的行?
set theText to get the clipboard
set questionMarkOffset to offset of "----" in theText
set the clipboard to text (questionMarkOffset + 5) thru -1 of theText
set theText to get the clipboard
set questionMarkOffset to offset of "----" in theText
set the clipboard to text (questionMarkOffset + 5) thru -1 of theText
这个 Applesctipt 可以工作,但不会保留样式文本。
tell application "TextEdit"
delete paragraphs 1 thru 2 of document 1
end tell
如果您事先不确定四个连字符始终位于第 3 行,可以使用以下方法让脚本查找仅包含四个连字符的第一行,然后删除其上方的所有行。
tell application "TextEdit"
set keepLine to "----" & linefeed
set paraList to paragraphs of document 1
repeat with c from 1 to length of paraList
if contents of item c of paraList = keepLine then
delete paragraphs 1 thru (c - 1) of document 1
exit repeat
end if
end repeat
end tell
该脚本创建文档段落列表,然后浏览它们以查看其中包含四个连字符,但不包含其他内容。
基本上,它使用“----”来标识正确的行,但这与删除过程是分开的。
备注:
段落末尾包含换行符(或回车符)。这就是为什么将
& linefeed
添加到 keepLine。
如果 keepLine 在四个连字符后面有其他字符,那么您必须将
if
语句调整为如下所示:
if contents of item c of paraList begins with keepLine then
一旦找到四个连字符的第一个实例,
exit repeat
命令就会停止重复过程。
对于具有良好(甚至还不错)applescript 支持的应用程序,您通常可以直接操作项目并避免使用剪贴板。
如果您查看文本编辑词典 (
File > Open Dictionary…
),那么您可以查看支持的各种命令和元素。