我想知道,如果一個字符串包含的abc
之一,def
,xyz
,等我能做到這一點,如:如何測試一個字符串是否包含多個子字符串之一?
$a.Contains("abc") -or $a.Contains("def") -or $a.Contains("xyz")
那麼它的工作原理,但我必須要改變的代碼,如果這個子列表的變化,性能很差,因爲$a
被多次掃描。
有沒有一個更有效的方法來做到這一點只有一個函數調用?
我想知道,如果一個字符串包含的abc
之一,def
,xyz
,等我能做到這一點,如:如何測試一個字符串是否包含多個子字符串之一?
$a.Contains("abc") -or $a.Contains("def") -or $a.Contains("xyz")
那麼它的工作原理,但我必須要改變的代碼,如果這個子列表的變化,性能很差,因爲$a
被多次掃描。
有沒有一個更有效的方法來做到這一點只有一個函數調用?
你可以使用-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
正則表達式是:$一個-match/\ A |高清| XYZ | ABC /克原始字符串 (https://regex101.com/r/xV6aS5/1)
當文本中包含特殊的正則表達式字符這段代碼失敗。你必須使用'$ referenzRegex = [string] :: Join('|',[Regex] :: Escape($ referenz))#爲這項工作創建正則表達式。 –