programing

PowerShell 및 -contains 연산자

cafebook 2023. 4. 8. 09:13
반응형

PowerShell 및 -contains 연산자

다음의 스니펫을 검토해 주세요.

"12-18" -Contains "-"

이렇게 평가하면true하지만 그렇지 않다.이것으로 평가됩니다.false대신.왜 이런 일이 일어나는지 모르겠지만, 실제로 일어나고 있어요.

이를 피하기 위해 대신 다음을 사용할 수 있습니다.

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

이제 표현은 참으로 평가됩니다.

첫 번째 코드 스니펫은 왜 이렇게 동작합니까?뭐 특별한 거라도 있나요?-그것은 와 잘 어울리지 않는다-Contains문서에는 이에 대한 언급은 없습니다.

-Contains연산자는 하위 문자열 비교를 수행하지 않으며 일치 항목이 완전한 문자열이어야 하며 수집 검색에 사용됩니다.

링크한 문서에서 다음 항목을 참조하십시오.

- 내용 설명:격납 연산자.기준 값 집합이 단일 검정 값을 포함하는지 여부를 나타냅니다.

제공된 예제에서는 문자열 항목을 하나만 포함하는 컬렉션으로 작업하고 있습니다.

링크된 설명서를 읽으면 이 동작을 보여주는 예를 볼 수 있습니다.

예:

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

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

당신이 원하는 건 교환원일 거예요

"12-18" -Match "-"

이 값은 반환됩니다.True.

중요:코멘트 및 링크된 문서에서 지적된 바와 같이,-Match연산자는 정규 표현을 사용하여 텍스트 조회를 수행합니다.

-Contains실제로는 수집 오퍼레이터입니다.컬렉션에 개체가 포함되어 있으면 true입니다.그것은 현에만 국한된 것이 아니다.

-match 정규 표현식 문자열 매처이며 캡처에 사용할 자동 변수를 설정합니다.

-like,-ilikeSQL과 같은 matcher입니다.

사용할 수 있습니다.like:

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

또는split위해서contains:

"12-18" -split "" -contains "-"
  • like가장 좋거나 적어도 쉬울 수 있습니다.
  • match는 regex 비교에 사용됩니다.

참조: 비교 연산자에 대하여

언급URL : https://stackoverflow.com/questions/18877580/powershell-and-the-contains-operator

반응형