2016-11-11 106 views
0
set r to "" 
set device to "IPHONE 6 PLUS SILVER 128GB-AUS" 
set HighValueDevicesPass to {"IPHONE 7", "IPHONE 6", "IPAD PRO", "IPHONE 6S", "IPHONE 6 PLUS"} 

if devices contains HighValueDevicesPass then 
    set r to "Pass" 
end if 
return r 

我不明白为什么这不起作用。 变量是“IPHONE 6 PLUS SILVER 128GB-AUS”,因此实际上包含列表中的“IPHONE 6 PLUS”。AppleScript列表/包含

它的工作正常,如果我使用IF是在列表中,但然后我将不得不将所有不同的模型设置为一个变量。

我该如何做一个部分匹配?

回答

2

您可以检查一个字符串是否在列表中,但不能检查任意列表项是否在字符串中。你必须重复所有的项目。

set r to "" 
set device to "IPHONE 6 PLUS SILVER 128GB-AUS" 
set HighValueDevicesPass to {"IPHONE 7", "IPHONE 6", "IPAD PRO"} 

repeat with i from 1 to count HighValueDevicesPass 
    if device contains item i of HighValueDevicesPass then 
     set r to "pass" 
     exit repeat 
    end if 
end repeat 

return r 

我也删除值 “IPHONE 6S” 及 “IPHONE 6 PLUS”,因为它们是由 “IPHONE 6” 串已经匹配。