的-contains
運營商是不是字符串操作,但收集容器操作:
'a','b','c' -contains 'b' # correct use of -contains against collection
從about_Comparison_Operators
help topic:
Type Operator Description
Containment -contains Returns true when reference value contained in a collection
-notcontains Returns true when reference value not contained in a collection
-in Returns true when test value contained in a collection
-notin Returns true when test value not contained in a collection
通常你會使用-like
串操作者在PowerShell,該支持Windows式通配符匹配(*
用於任何數目的任何字符,?
爲任何字符的正好一個,[abcdef]
對於一個字符集的一個):
'abc' -like '*b*' # $true
'abc' -like 'a*' # $true
另一種替代方法是-match
操作:
'abc' -match 'b' # $true
'abc' -match '^a' # $true
逐字串匹配,你會想逃避任何輸入模式,因爲-match
是一個正則表達式運算符:
'abc.e' -match [regex]::Escape('c.e')
一種替代方法是使用String.Contains()
方法:
'abc'.Contains('b') # $true
隨着的是,不像的powershell字符串運算,它是大小寫敏感的警告。
String.IndexOf()
是另一種選擇,這一個可以讓你覆蓋默認的情況下,靈敏度:
'ABC'.IndexOf('b', [System.StringComparison]::InvariantCultureIgnoreCase) -ge 0
IndexOf()
返回-1
如果沒有找到子串,所以任何非負的返回值可以被解釋爲找到了子字符串。
你」再loo ''匹配'Windows''或'-like'* Windows *'',包含的內容僅用於數組。 – ConnorLSW
的'-match'運營商,據我瞭解,是正則表達式,其中包含通配符的較小的子集工作,這樣也能發揮作用。但是如果我想恰當地使用'contains'運算符,我該如何做?我的問題是不是我*如何做到這一點?*而是*爲什麼會發生這種從來沒有爲我工作,我在做什麼錯這個操作在這裏嗎?*有100辦法做的事。我可以從.NET基類庫中調用'「字符串值」.Contains()'。 –
[PowerShell和的-contains運算符(https://stackoverflow.com/questions/18877580/powershell-and-the-contains-operator) –