-Контейнеры работают не так, как ожидалось [дубликат]

Если вы действительно смотрите на производительность, то используйте numpy!

Вот полный блокнот как сущность на github со сравнением между списком, numpy и pandas.

https://gist.github.com/denfromufa/2821ff59b02e9482be15d27f2bbd4451

74
задан tnw 18 September 2013 в 17:31
поделиться

2 ответа

Оператор -Contains не выполняет сравнения подстрок, а совпадение должно быть в полной строке и используется для поиска коллекций.

Из документации, к которой вы привязались:

-Содержание Описание: Оператор сдерживания. Сообщает, содержит ли набор эталонных значений одно тестовое значение.

В приведенном примере вы работаете с коллекцией, содержащей только один строковый элемент.

Если вы читаете документацию, с которой вы связаны, вы увидите пример, демонстрирующий это поведение:

Примеры:

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

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

Я думаю, что вы хотите -Match :

"12-18" -Match "-"

Который возвращает True.

105
ответ дан Peter Mortensen 22 August 2018 в 14:19
поделиться
  • 1
    Для полноты, в то время как -Match может быть хорошим совпадением, он использует регулярное выражение. Если вы хотите, чтобы однозначная строка содержала проверку, следует делать, как описывает OP: "12-18".Contains("-") – 8DH 30 November 2016 в 10:14
  • 2
    @ 8DH - очень хороший улов :). Перечитав вопрос, я думаю, мне нужно прояснить разницу между оператором Contains powershell и методом .Contains() .NET String. – Kev 30 November 2016 в 12:08

-Contains фактически является оператором коллекции. Это правда, если коллекция содержит объект. Это не ограничивается строками.

-match и -imatch являются символами строки регулярного выражения и устанавливают автоматические переменные для использования с захватами.

-like, -ilike являются подобными SQL-символами.

27
ответ дан Peter Mortensen 22 August 2018 в 14:19
поделиться
  • 1
    Для полноты, в то время как -Match может быть хорошим совпадением, он использует регулярное выражение. Если вы хотите, чтобы однозначная строка содержала проверку, следует делать, как описывает OP: "12-18".Contains("-") – 8DH 30 November 2016 в 10:14
  • 2
    @ 8DH - очень хороший улов :). Перечитав вопрос, я думаю, мне нужно прояснить разницу между оператором Contains powershell и методом .Contains() .NET String. – Kev 30 November 2016 в 12:08
Другие вопросы по тегам:

Похожие вопросы: