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

10

我希望知道如何判断一个字符串是否包含abcdefxyz等字符。可以这样实现:

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

这种方法虽然可以工作,但如果子字符串列表发生变化,就需要改变代码,而且由于多次扫描$a,性能较差。

有没有更高效的方法只需一个函数调用就可以完成?

2个回答

16
您可以使用-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

4
当文本包含特殊正则表达式字符时,此代码片段会失败。您必须使用 $referenzRegex = [string]::Join('|', [Regex]::Escape($referenz)) # create the regex 来解决这个问题。 - Rosberg Linhares

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接