IT

PowerShell 및-포함 연산자

lottoking 2020. 8. 2. 17:13
반응형

PowerShell 및-포함 연산자


다음 스 니펫을 고려하십시오.

"12-18" -Contains "-"

로 평가 이것이 true된다고 생각 하지만 오는가 않습니다. false대신 평가 합니다. 왜 이런 일이 발생하는지 잘 모르겠지만 그렇게됩니다.

이를 위해 대신 사용할 수 있습니다.

"12-18".Contains("-")

이제식이 true로 평가됩니다.

첫 번째 코드 스 니펫이 왜 그렇게 동작합니까? -잘 어울리지 않는 특별한 점이 -Contains있습니까? 문서는 내용에 관한 내용을 언급하지 않습니다.


-Contains연산자는 비교를 하위보다 많이 사용하지 않고 경기는보다 많이 사용하며 컬렉션을 검색합니다.

연결 한 설명서에서 :

-설명 포함 : 격리 연산자. 참조 값 모음에 단일 테스트 값이 포함되어 있는지 여부를 알려줍니다.

이 예 포함에서는 컬렉션 항목이 하나만 설명했습니다.

링크 한 문서를 문서면이 동작을 예가 표시됩니다.

예 :

PS C:\> "abc", "def" -Contains "def"
True

PS C:\> "Windows", "PowerShell" -Contains "Shell"
False  #Not an exact match

나는 당신이 원하는 것이 연산자 라고 생각합니다 .-Match

"12-18" -Match "-"

어느 것이 반환합니다 True.

중요 사항 : 주석링크 된 문서 에서 지적했듯이 -Match연산자는 정규식 을 사용하여 텍스트 일치를 수행합니다.


-Contains실제로 수집 연산자입니다. 컬렉션에 개체가 포함되어 있으면 사실입니다. 언어에만 국한되지 않습니다.

-match-imatch 키트에 사용되는 정규 표현식 및 세트 자동 변수입니다.

-like, -ilike정합 기 SQL- 같다.


당신은 사용할 수 있습니다 like:

"12-18" -like "*-*"

또는를 split위한 contains:

"12-18" -split "" -contains "-"

  • like 가장 좋거나 가장 많은 것.
  • match 정규식 비교에 사용됩니다.

참조 : https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6

참고 URL : https://stackoverflow.com/questions/18877580/powershell-and-the-contains-operator

반응형