我有一个脚本,它会查找名称并搜索与另一个变量的匹配。
如果变量1是"名称演示"它正常工作。变量2是"演示名称"然后脚本找不到匹配项。
set nameMatchTXT to ""
if NameOnDevice contains theName then
set nameMatch to theName & " : Name Match"
end if
无论如何要改变这个以找到匹配的订单吗? PS脚本正在寻找单词野性名称,有时处理双位字符可能是一个困难。
答案 0 :(得分:2)
您的要求声明:
如果变量1是“名称演示”而变量2是“演示名称”则 脚本找不到匹配。
这将解决这个问题:
set var1 to "Name Demo"
set var2 to "Demo Name"
if (var2 contains (word 1 of var1)) and (var2 contains (word 2 of var1)) then
-- you have a match
display dialog "var1 and var2 match"
else
display dialog "no match"
end if
答案 1 :(得分:1)
您必须对每种情况进行单独检查。还有其他方法(例如复杂的正则表达式),但这是最简单和最可读的。
set nameMatch1 to "Name"
set nameMatch2 to "Demo"
if (NameOnDevice contains nameMatch1) and (NameOnDevice contains nameMatch2) then
set nameMatch to NameOnDevice & " : Name Match"
end if
如果要添加匹配条件,最终可能会添加更多条件。您可能希望将所有单词放在列表中并检查它,而不是添加更多变量和更多条件。将来,如果您需要添加更多单词,只需将单词添加到列表中即可。我已经将它提取到一个单独的子程序中,以便于阅读:
on name_matches(nameOnDevice)
set match_words to {"Name", "Demo"}
repeat with i from 1 to (count match_words)
if nameOnDevice does not contain item i of match_words then
return false
end if
end repeat
return true
end name_matches
if name_matches(nameOnDevice) then
set nameMatch to nameOnDevice & " : Name Match"
end if
如果您无法控制匹配的文本(如果它来自外部源,并且您没有编码),则可以将该文本拆分为单词,并将其用作第二个示例中的单词列表。例如:
on name_matches(nameOnDevice, match_text)
set match_words to words of match_text
repeat with i from 1 to (count match_words)
if nameOnDevice does not contain item i of match_words then
return false
end if
end repeat
return true
end name_matches
if name_matches(nameOnDevice, match_text_from_some_other_source) then
set nameMatch to nameOnDevice & " : Name Match"
end if