2015-06-30 44 views
4

我想知道,如果一個字符串包含的abc之一,defxyz,等我能做到這一點,如:如何測試一個字符串是否包含多個子字符串之一?

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

那麼它的工作原理,但我必須要改變的代碼,如果這個子列表的變化,性能很差,因爲$a被多次掃描。

有沒有一個更有效的方法來做到這一點只有一個函數調用?

回答

7

你可以使用-match方法,並自動創建正則表達式使用string.j OIN:

$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 
+0

當文本中包含特殊的正則表達式字符這段代碼失敗。你必須使用'$ referenzRegex = [string] :: Join('|',[Regex] :: Escape($ referenz))#爲這項工作創建正則表達式。 –

相關問題