【问题标题】:How to add double \ to a string if it contains brackets (AppleScript)如果字符串包含括号(AppleScript),如何将双 \ 添加到字符串
【发布时间】:2019-02-07 22:35:19
【问题描述】:

我编写了一个 AppleScript,它从 Genius 获取歌词并将其添加到我的 iTunes 歌曲中。

基本上有一个循环遍历我最近添加到 iTunes 中的歌曲,对于每首歌曲,它都会进入天才并试图找到那首歌,如果找不到那首歌,那么 song_namesong_artist 被放入一个名为 songNotAva 的变量中。将其放入变量中的方式是: set songNotAva to songNotAva & {"- ", song_name, " - ", song_artist & return}。 然后,一旦“获取歌曲的所有歌词”的循环完成,如果songNotAva 不为空,则执行以下代码:

if songNotAva is not equal to {} then
    do shell script "> $HOME/Desktop/songs.txt"
    do shell script "echo " & songNotAva & ">> $HOME/Desktop/songs.txt"
end if

它将失败的歌曲输出到具有这种格式的文本文件中:

- song_name - song_artist
- song_name - song_artist
- song_name - song_artist

song_namesong_artist 将反映失败的歌曲)

它工作得非常好,并且完全按照我的预期输出,但问题是 iTunes 中的某些歌曲标题包含括号 (),如果你尝试使用 shell 输出这些括号,它会想出一个错误并且不会输出任何东西(除非你在括号前有反斜杠,如 \\(\\) 那么它会正常工作)

所以,所有找不到的歌曲都保存在列表songNotAva 中,然后在循环结束后打印到文本文件中。

我的问题是如何检查 song_title 是否包含任何括号,如果包含,那么如何在括号前添加反斜杠?

【问题讨论】:

  • 或许可以试试& quoted form of songNotAva & ?
  • @jhnc 我收到一条错误消息,提示“无法将 {“7 个环(示例括号)”} 的引号形式转换为 Unicode 文本类型。”
  • songNotAva 是一个列表吗?如果是这样,我想您需要遍历每个元素(除非您想将所有内容回显到 songs.txt 的单行)
  • @jhnc 是的,它是一个列表。本质上它的工作方式是,对于每首找不到歌词的歌曲,将其添加到该变量中,然后一旦循环(获取歌词)完成,如果 songNotAva 不为空,则制作一个文本文件,然后在每个新行上使用格式- song name - song artist 填充失败的歌曲

标签: shell terminal applescript


【解决方案1】:

songNotAva 是一个列表,您必须使用循环并使用quoted form of 转义每个字符串。

检查空列表是多余的。如果列表为空,则将跳过循环。

set songNotAva to {"7 rings(example bracket)"}

do shell script "> $HOME/Desktop/songs.txt"
repeat with aSong in songNotAva
    do shell script "echo " & quoted form of aSong & " >> $HOME/Desktop/songs.txt"
end repeat

【讨论】:

  • 太好了!它输出没有任何错误。这会在新行上输出列表中的所有内容,如果您查看我的原始帖子(我已对其进行了更新),我的列表格式将为 - song name - song artist 并且每一行都相同(但更新后的名称和艺术家)。那么有没有一种方法可以将每首歌曲的所有内容打印在一行上?
  • 抱歉,我没有看到{"7 rings(example bracket)"}{"- ", song_name, " - ", song_artist & return} 之间的关系。请编辑问题以提供易于理解的输入和输出示例。
  • 抱歉,我已经更新了整个问题,希望它更容易理解。您的修复适用于括号问题(谢谢),但它将列表中的所有内容打印在新行上,我想以上面显示的格式打印它。
  • 我还是不明白,抱歉。
猜你喜欢
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 2015-10-01
  • 2021-02-07
  • 2020-04-15
相关资源
最近更新 更多