[.net] PowerShell에서 문자열이 null인지 또는 비어 있는지 어떻게 확인할 수 있습니까?

IsNullOrEmptyPowerShell에서 문자열이 null인지 또는 비어 있는지 확인하기 위해 기본 제공 기능이 있습니까?

나는 지금까지 그것을 찾을 수 없었고 내장 된 방법이 있다면 이것을 위해 함수를 작성하고 싶지 않습니다.



답변

IsNullOrEmpty정적 메소드를 사용할 수 있습니다 .

[string]::IsNullOrEmpty(...)


답변

너희들은 이것을 너무 어렵게 만들고있다. PowerShell은이를 매우 우아하게 처리합니다.

> $str1 = $null
> if ($str1) { 'not empty' } else { 'empty' }
empty

> $str2 = ''
> if ($str2) { 'not empty' } else { 'empty' }
empty

> $str3 = ' '
> if ($str3) { 'not empty' } else { 'empty' }
not empty

> $str4 = 'asdf'
> if ($str4) { 'not empty' } else { 'empty' }
not empty

> if ($str1 -and $str2) { 'neither empty' } else { 'one or both empty' }
one or both empty

> if ($str3 -and $str4) { 'neither empty' } else { 'one or both empty' }
neither empty


답변

뿐만 아니라 [string]::IsNullOrEmpty위해 널 (null)를 확인하거나 명시 적 또는 부울 표현식에서 부울 문자열을 캐스팅 할 수 비우합니다 :

$string = $null
[bool]$string
if (!$string) { "string is null or empty" }

$string = ''
[bool]$string
if (!$string) { "string is null or empty" }

$string = 'something'
[bool]$string
if ($string) { "string is not null or empty" }

산출:

False
string is null or empty

False
string is null or empty

True
string is not null or empty


답변

함수의 매개 변수 인 경우 ValidateNotNullOrEmpty다음 예에서 볼 수 있듯이 이를 검증 할 수 있습니다.

Function Test-Something
{
    Param(
        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$UserName
    )

    #stuff todo
}


답변

개인적으로 공백 ($ STR3)을 ‘비어 있지 않음’으로 허용하지 않습니다.

공백 만 포함 된 변수가 매개 변수로 전달 될 때 매개 변수 값이 공백이 아니라고 ‘$ null’이 아니라는 오류가 발생하는 경우가 있습니다. 일부 제거 명령은 루트 대신 폴더를 제거 할 수 있습니다. 하위 폴더 이름이 “공백”인 경우 많은 경우 공백이 포함 된 문자열을 허용하지 않는 모든 이유가 있습니다.

이것이 최선의 방법이라고 생각합니다.

$STR1 = $null
IF ([string]::IsNullOrWhitespace($STR1)){'empty'} else {'not empty'}

$STR2 = ""
IF ([string]::IsNullOrWhitespace($STR2)){'empty'} else {'not empty'}

$STR3 = " "
IF ([string]::IsNullOrWhitespace($STR3)){'empty !! :-)'} else {'not Empty :-('}

빈!! 🙂

$STR4 = "Nico"
IF ([string]::IsNullOrWhitespace($STR4)){'empty'} else {'not empty'}

비어 있지 않음


답변

컴퓨터에서 [String] :: IsNullOrWhiteSpace ()가없는 컴퓨터에서 실행해야하는 PowerShell 스크립트가 있으므로 직접 작성했습니다.

function IsNullOrWhitespace($str)
{
    if ($str)
    {
        return ($str -replace " ","" -replace "`t","").Length -eq 0
    }
    else
    {
        return $TRUE
    }
}


답변

# cases
$x = null
$x = ''
$x = ' '

# test
if ($x -and $x.trim()) {'not empty'} else {'empty'}
or
if ([string]::IsNullOrWhiteSpace($x)) {'empty'} else {'not empty'}