AppleScript中的CR与LF

AppleScript中的CR与LF,applescript,Applescript,我使用AppleScript处理从Keynote presenter注释中提取的文本。通常我会逐段浏览文本,但最近我发现了一个实例,其中使用了»软返回«(ASCII 13 aka CR)而不是实际返回(ASCII 10 aka LF) 我现在尝试对文本进行预处理,以摆脱有利于LFs的CR,但以下方法没有明显的原因而失败: on purgeCR(aText) set my text item delimiters to {ASCII character 13} return t

我使用AppleScript处理从Keynote presenter注释中提取的文本。通常我会逐段浏览文本,但最近我发现了一个实例,其中使用了»软返回«(ASCII 13 aka CR)而不是实际返回(ASCII 10 aka LF)

我现在尝试对文本进行预处理,以摆脱有利于LFs的CR,但以下方法没有明显的原因而失败:

on purgeCR(aText)
     set my text item delimiters to {ASCII character 13}
     return text items of aText as text
end purgeCR
当我在这里输入包含CRs和LFs的文本时,它们都会保持不变,我真的不知道为什么。由于某些原因,CR不能用作文本项分隔符

另一个尝试是使用shell:

set z to do shell script "echo " & quoted form of a & " | tr '\r' '\n' " without altering line endings
也没有运气

出于某种原因,CR干扰了AppleScript处理文本的能力,或者我只是没有看到非常明显的东西,因为它很愚蠢

我有一个工作脚本,可以一个字符一个字符地遍历文本,但是必须有一种更简单(更快)的方法来完成

脚本编辑器中运行的以下示例AppleScript代码将用换行符替换回车符:

将foo设置为“此文本包含\r而不是\n所期望的内容。\r我如何删除它们?”
将AppleScript的文本项分隔符设置为返回
将bar设置为foo的文本项
将AppleScript的文本项分隔符设置为换行符
将foo设置为条形图的文本项为文本
将AppleScript的文本项分隔符设置为{}
返回foo

更新地址评论:

作为使用10.2版(7028.0.88)在macOS Catalina 10.15.6下进行的一个简单测试,我用一张幻灯片创建了一个新的演示文稿,这是在Keynote
中打开的唯一窗口,同时没有从默认值修改它

在脚本编辑器中,我运行了以下示例AppleScript代码:

将foo设置为“foo\rbar”
foo的字符4的ASCII编号
告诉应用程序“Keynote”告诉前面文档的幻灯片1
将演示者笔记设置为foo
将工具栏设置为“演示者笔记”
结束语
条形码字符4的ASCII编号
告诉应用程序“Keynote”告诉前面文档的幻灯片1
将foo设置为演示者笔记
结束语
foo的字符4的ASCII编号
将AppleScript的文本项分隔符设置为返回
将bar设置为foo的文本项
木条
将AppleScript的文本项分隔符设置为换行符
将foo设置为条形图的文本项为文本
日志文件
将AppleScript的文本项分隔符设置为{}
foo的字符4的ASCII编号
告诉应用程序“Keynote”告诉前面文档的幻灯片1
将演示者笔记设置为foo
将工具栏设置为“演示者笔记”
结束语
条形码字符4的ASCII编号
脚本编辑器的回复窗格中显示以下内容:

告诉当前应用程序
ASCII码“
"
--> 13
结束语
告诉应用程序“基调”
将文档1幻灯片1的演示者备注设置为“foo”
酒吧“
获取文档1幻灯片1的演示者笔记
-->“福
酒吧“
结束语
告诉当前应用程序
ASCII码“
"
--> 13
结束语
告诉应用程序“基调”
获取文档1幻灯片1的演示者笔记
-->“福
酒吧“
结束语
告诉当前应用程序
ASCII码“
"
--> 13
(*foo,bar*)
(*富)
酒吧*)
ASCII码“
"
--> 10
结束语
告诉应用程序“基调”
将文档1幻灯片1的演示者备注设置为“foo”
酒吧“
获取文档1幻灯片1的演示者笔记
-->“福
酒吧“
结束语
告诉当前应用程序
ASCII码“
"
--> 10
结束语
结果:
10
正如您所看到的,回车确实被换行符替换了


如果您没有得到相同的结果,我唯一能提出的建议是,在您将presenter注释设置为已将回车替换为换行符的文本之前,首先将presenter注释设置为
,然后设置为更正的文本。

这很有趣。让我展示这个例子,在这个例子中,我使用您的方法并排处理注释记号演示者注释文本的文本,以及您在示例中使用的文本。不确定如何显示图片,但此处:。现在,无论我从keynote中得到的文本是什么,CR如何能够经受住显然对构造文本有效的处理?@peterpur,有趣的是,如果我从文本中包含回车符的文本文件复制并粘贴到幻灯片的演示者注释中,它们会自动转换为换行符,所以我的问题是。。。您是如何将回车输入演示者备注的?--顺便说一句,我在macOS Catalina 10.15.6上使用的是Keynote版本10.2(7028.0.88)。@peterpur,请查看我的更新答案。我能够在演示者笔记中引入回车符,然后检索它并用换行符替换它。因此,我的原始答案仍然有效。shift-return在演示者笔记中创建CR。我会看看你编辑的答案,谢谢你的努力!