如果字符串中包含方括号,如何将double \添加到字符串中(AppleScript)

时间:2019-02-07 22:35:19

标签: shell terminal applescript

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

从本质上讲,有一个循环遍历最近添加到iTunes中的我的歌曲,然后将每首歌曲转到天才并尝试查找该歌曲,如果找不到该歌曲,则{{1} }和song_name放入名为song_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_name将反映失败的歌曲)

它工作得非常好,并且可以完全按照我的期望输出,但是问题是iTunes中的某些歌曲标题包含方括号(),如果您尝试使用shell输出这些方括号,则会出现错误并且不会输出任何内容(除非您在\\(\\)之类的括号之前加上反斜杠,否则它将正常工作)

因此,所有找不到的歌曲都保存在列表song_artist中,并在循环结束后稍后打印到文本文件中。

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

1 个答案:

答案 0 :(得分:0)

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