Kaip patikrinti, ar eilutė yra tuščia arba tuščia „PowerShell“?

Ar yra įmontuota funkcija „ IsNullOrEmpty kad patikrintumėte, ar eilutė „PowerShell“ yra tuščia arba tuščia?

Iki šiol negalėjau rasti, ir jei yra įmontuotas metodas, nenoriu užrašyti šios funkcijos.

259
06 дек. paprašė pencilCake 06 dec. 2012-12-06 10:09 '12 - 10:09 2012-12-06 10:09
@ 8 atsakymai

Galite naudoti statinį „ IsNullOrEmpty metodą:

 [string]::IsNullOrEmpty(...) 
285
06 дек. Atsakymą pateikė Shay Levy 06 dec. 2012-12-06 10:48 '12 10:48 2012-12-06 10:48

Jūs vaikinai per sunku. „PowerShell“ tai gana elegantiškai tvarko, pavyzdžiui:

 > $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 
426
06 дек. Keith Hill atsakymas, gruodis 06 2012-12-06 19:21 '12, 07:21 pm 2012-12-06 19:21

Be [string]::IsNullOrEmpty norėdami patikrinti nulį arba tuščią, galite aiškiai [string]::IsNullOrEmpty eilutę Būlio arba būlio išraiškose:

 $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" } 

Išvada:

 False string is null or empty False string is null or empty True string is not null or empty 
32
06 дек. Atsakymas duotas romėnų Kuzmino 06 d. 2012-12-06 11:30 '12, 11:30 val. 2012-12-06 11:30

Jei tai yra funkcijos parametras, galite jį patikrinti naudodami „ ValidateNotNullOrEmpty , kaip matote šiame pavyzdyje:

 Function Test-Something { Param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$UserName ) #stuff todo } 
14
30 марта '15 в 15:50 2015-03-30 15:50 atsakymą Rubanovas pateikė kovo 15 d. 15:50 2015-03-30 15:50

Asmeniškai aš nepriimsiu vietos ($ STR3) kaip „ne tuščias“.

Kai parametrams perduodamas kintamasis, kuriame yra tik tarpai, dažnai klysta, kad parametro reikšmė gali būti ne „$ null“, o ne sakyti, kad ji gali būti ne tuščia, o kai kurios ištrinti komandos gali ištrinti šakninį aplanką vietoj pakatalogio, jei poaplankio pavadinimas yra balta erdvė, visos priežastys daugeliu atvejų neleidžia eilutės su tarpais.

Manau, kad tai yra geriausias būdas tai pasiekti:

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

Tuščias

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

Tuščias

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

Tuščias !!: -)

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

Nėra tuščias

7
10 февр. Nico van der Stok atsakymas, pateiktas vasario 10 d. 2016-02-10 17:04 '16 at 17:04 pm 2016-02-10 17:04

Turiu „PowerShell“ scenarijų, kurį turiu paleisti kompiuteryje taip pasenus, kad neturi [String] :: IsNullOrWhiteSpace (), todėl parašiau savo.

 function IsNullOrWhitespace($str) { if ($str) { return ($str -replace " ","" -replace "`t","").Length -eq 0 } else { return $TRUE } } 
4
31 янв. atsakymas, kurį pateikė mhenry1384 Jan 31 2017-01-31 01:00 '17, 1:00 2017-01-31 01:00

Patikrinkite ilgį. Jei objektas egzistuoja, jis turės ilgį.

Nulis objektų neturi ilgio, jų nėra ir jų negalima patikrinti.

Styginių objektas turi ilgį.

Klausimas buvo: „IsNull“ arba „IsEmpty“, „NOT IsNull“ arba „IsEmpty“ arba „IsWhiteSpace“

 #Null $str1 = $null $str1.length ($str1 | get-member).TypeName[0] # Returns big red error #Empty $str2 = "" $str2.length ($str2 | get-member).TypeName[0] # Returns 0 ## Whitespace $str3 = " " $str3.length ($str3 | get-member).TypeName[0] ## Returns 1 
0
05 марта '16 в 20:17 2016-03-05 20:17 atsakymą pateikė Lukas B_ kovo 05 '16, 20:17 2016-03-05 20:17

Atkreipkite dėmesį, kad „jei ($ str)“ ir „IsNullOrEmpty“ testai neveikia visais atvejais palyginamais: priskiriant $ str = 0, abiem yra klaidingų verčių, ir priklausomai nuo numatomo programos semantikos, tai gali sukelti netikėtumą.

0
27 нояб. Atsakymą pateikė Steve Friedl 27 lapkritis 2016-11-27 22:37 '16 at 22:37 pm 2016-11-27 22:37

Kiti klausimai apie žymių arba Ask a question