如果包含方括号 (AppleScript),如何将双 \ 添加到字符串
How to add double \ to a string if it contains brackets (AppleScript)
我写了一个 AppleScript,它从 Genius 获取歌词并将其添加到我的 iTunes 歌曲中。
基本上有一个循环遍历我最近添加到 iTunes 中的歌曲,对于每首歌曲,它都会去找天才并尝试找到那首歌,如果找不到这首歌,那么 song_name
和 song_artist
被放入一个名为 songNotAva
的变量中。它放在变量中的方式是:
set songNotAva to songNotAva & {"- ", song_name, " - ", song_artist & return}
。
然后一旦到 "get all the lyrics for songs" 的循环完成,如果 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
和 song_artist
将反映失败的歌曲)
它工作得很好并且输出完全符合我的预期,但问题是 iTunes 中的一些歌曲标题包含方括号 (),如果您尝试使用 shell 输出这些方括号,它会出现错误并且不会输出任何内容(除非你在括号前有反斜杠,如 \\(\\) 那么它会正常工作)
因此,所有找不到的歌曲都保存在列表中 songNotAva
,并在循环结束后打印到文本文件中。
我的问题是如何检查 song_title 是否包含任何括号,如果包含那么我如何在括号前添加反斜杠?
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
我写了一个 AppleScript,它从 Genius 获取歌词并将其添加到我的 iTunes 歌曲中。
基本上有一个循环遍历我最近添加到 iTunes 中的歌曲,对于每首歌曲,它都会去找天才并尝试找到那首歌,如果找不到这首歌,那么 song_name
和 song_artist
被放入一个名为 songNotAva
的变量中。它放在变量中的方式是:
set songNotAva to songNotAva & {"- ", song_name, " - ", song_artist & return}
。
然后一旦到 "get all the lyrics for songs" 的循环完成,如果 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
和 song_artist
将反映失败的歌曲)
它工作得很好并且输出完全符合我的预期,但问题是 iTunes 中的一些歌曲标题包含方括号 (),如果您尝试使用 shell 输出这些方括号,它会出现错误并且不会输出任何内容(除非你在括号前有反斜杠,如 \\(\\) 那么它会正常工作)
因此,所有找不到的歌曲都保存在列表中 songNotAva
,并在循环结束后打印到文本文件中。
我的问题是如何检查 song_title 是否包含任何括号,如果包含那么我如何在括号前添加反斜杠?
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