Существует ли встроенная IsNullOrEmpty
функция, подобная функции для проверки, является ли строка пустой или пустой в PowerShell?
Я не мог найти это до сих пор, и если есть встроенный способ, я не хочу писать функцию для этого.
.net
string
powershell
null
pencilCake
источник
источник
String.IsNullOrEmpty
?Ответы:
Вы можете использовать
IsNullOrEmpty
статический метод:источник
!
. Это работает только в новых версиях PowerShell.!
это псевдоним для-not
Вы, ребята, делаете это слишком сложно. PowerShell справляется с этим довольно элегантно, например:
источник
IsNullOrWhitespace()
для этого сценария. Но после 11 лет написания сценариев в PowerShell я обнаружил, что мне очень редко нужен этот строковый тест . :-)В дополнение к тому
[string]::IsNullOrEmpty
, чтобы проверить наличие пустых или пустых значений, вы можете привести строку к логическому явному выражению или в булевых выражениях:Вывод:
источник
If
Предложение внутренне преобразует все, что находится внутри круглых скобок, в единственное логическое значение, что означает, чтоif($string){Things to do for non-empty-nor-null}
илиif(!$string){Things to do for empty-or-null}
без явного преобразования[bool]
будет достаточно.Если это параметр в функции, вы можете проверить его с помощью,
ValidateNotNullOrEmpty
как вы можете видеть в этом примере:источник
Лично я не принимаю пробел ($ STR3) как «не пустой».
Когда переменная, которая содержит только пробелы, передается параметру, часто возникает ошибка, что значение параметра может не быть «$ null», вместо того, чтобы сказать, что это может быть не пробел, некоторые команды удаления могут удалить корневую папку вместо подпапка, если имя подпапки является «пробелом», во многих случаях причина не принимать строку, содержащую пробелы.
Я считаю, что это лучший способ сделать это:
пустой
пустой
Слейте !! :-)
Не пусто
источник
У меня есть сценарий PowerShell, который я должен запустить на компьютере настолько устаревшем, что у него нет [String] :: IsNullOrWhiteSpace (), поэтому я написал свой собственный.
источник
источник
Замена PowerShell 2.0 для
[string]::IsNullOrWhiteSpace()
isstring -notmatch "\S"
(" \ S " = любой непробельный символ)
Производительность очень близка:
источник
Другой способ сделать это чисто PowerShell - сделать что-то вроде этого:
Это успешно оценивается для нулевой, пустой строки и пробела. Я форматирую переданное значение в пустую строку для обработки нулевого значения (в противном случае нулевое значение вызовет ошибку при вызове Trim). Тогда просто оцените равенство с пустой строкой. Я думаю, что я все еще предпочитаю IsNullOrWhiteSpace, но если вы ищете другой способ сделать это, это будет работать.
В приступе скуки я немного поиграл с этим и сделал его короче (хотя и более загадочным):
или
в зависимости от того, что вы пытаетесь сделать.
источник
Обратите внимание , что
"if ($str)"
и"IsNullOrEmpty"
тесты не работают сравнительно во всех случаях: уступка$str=0
производит ложное для обоих, и в зависимости от предполагаемых программ семантики, это может принести сюрприз.источник
Проверьте длину. Если объект существует, он будет иметь длину.
Нулевые объекты не имеют длины, не существуют и не могут быть проверены.
Строковый объект имеет длину.
Вопрос был: IsNull или IsEmpty, НЕ IsNull или IsEmpty или IsWhiteSpace
источник
Null objects have no length
- вы пытались выполнить$null.length
? :-) Для быстрого bool-теста, пайпинг в Get-Member и последующая обработка возникающей ошибки для случая $ null кажутся мне немного тяжелыми.