如何测试一个字符串是否包含多个子字符串之一?

时间:2015-06-30 08:11:24

标签: string powershell compare

我想知道字符串是否包含abcdefxyz等字符串。我可以这样做:

$a.Contains("abc") -or $a.Contains("def") -or $a.Contains("xyz")

它确实有效,但如果此子字符串列表发生更改,我必须更改代码,并且由于$a被多次扫描,因此性能很差。

只用一个函数调用是否有更有效的方法?

2 个答案:

答案 0 :(得分:11)

您可以使用-match方法并使用string.join自动创建正则表达式:

$referenz = @('abc', 'def', 'xyz')    
$referenzRegex = [string]::Join('|', $referenz) # create the regex

用法:

"any string containing abc" -match $referenzRegex # true
"any non matching string" -match $referenzRegex #false

答案 1 :(得分:3)

正则表达式: $ a -match / \ a | def | xyz | abc / g https://regex101.com/r/xV6aS5/1

  • 在原始字符串中的任意位置匹配精确字符: 'Ziggy stardust' -match'iggy'

来源:http://ss64.com/ps/syntax-regex.html