Applescript 获取具有特定内容的列表项

Applescript 获取具有特定内容的列表项,applescript,Applescript,如何获取包含特定内容的列表项 例如: set listItems to {"abc","a bc","a(b)c","(bc"} get every item which contains "a" of listItems 期望结果:“abc”、“abc”、“a(b)c” 或 预期结果:“a(b)c” 我已经阅读了基础教程:所以我对任何一种解决方法都感兴趣。我认为纯applescript中没有一种解决方法。你必须循环这些项目。大概是这样的: set listItems to {"abc", "

如何获取包含特定内容的列表项

例如:

set listItems to {"abc","a bc","a(b)c","(bc"}
get every item which contains "a" of listItems
期望结果:“abc”、“abc”、“a(b)c”

预期结果:“a(b)c”


我已经阅读了基础教程:所以我对任何一种解决方法都感兴趣。

我认为纯applescript中没有一种解决方法。你必须循环这些项目。大概是这样的:

set listItems to {"abc", "a bc", "a(b)c", "(bc"}

my searchForPatterns(listItems, {"a"})
--result: {"abc", "a bc", "a(b)c"}

my searchForPatterns(listItems, {"(", ")"})
--result: {"a(b)c"}

on searchForPatterns(listItems, searchPatterns)
    set resultList to {}
    repeat with listItem in listItems
        set match to true

        repeat with searchPattern in searchPatterns
            if listItem does not contain searchPattern then ¬
                set match to false
        end repeat

        if match is true then ¬
            copy listItem as text to end of resultList
    end repeat
    return resultList
end searchForPatterns

您可以简单地遍历列表并测试匹配项:

set listItems to {"abc", "a bc", "a(b)c", "(bc"}
set finalItems to {}
repeat with thisItem in listItems
    if (thisItem contains "(") and (thisItem contains ")") then set finalItems to finalItems & thisItem
end repeat
return finalItems
set listItems to {"abc", "a bc", "a(b)c", "(bc"}
set finalItems to {}
repeat with thisItem in listItems
    if (thisItem contains "(") and (thisItem contains ")") then set finalItems to finalItems & thisItem
end repeat
return finalItems