20 сентября 2019

Любой тип данных в Powershell может использовать методы объектов .NET. Каждый из этих методов можно использовать либо в виде команды, ключа или метода .Net. Узнать тип данных, у любого объекта Powershell, который находится в переменной можно через один из таких методов:

В колонке Name отображается тип строка. Со строками часто нужно переводить их в другой регистр, измерять длину, заменять символы.

Для примера переведем строку в верхний регистр:

Или обратная операция, которая переведет строку Powershell в верхний регистр:

Можно проверить содержание символов в конце строки, которое вернет булевое значение True при положительном результате:

Обратите внимание, что регистр букв имеет значение:

Можно использовать несколько методов один за другим:

Поиск подстроки в Powershell, тоже возвращает булевое значение:

Можно вернуть номер первого упомянутого символа — это называется индексом:

Или вернуть последний индекс последнего символа, так как в этой строке несколько букв ‘И’

По этим индексам можно получить срез подстроки в Powershell. В моем случае первый индекс — это знак пробела:

Можно указать второй индекс, но нужно помнить, что после объявления первого индекса второй должен объявляться относительно первого:

Вставка новой строки по индексу:

Измерение длины строки в Powershell:

Метод replace в Powershell мы уже разбирали в виде ключа и регулярных значений. Это пример метода .NET. Как и методы выше тут важен регистр символов:

Один из самых частых методов в Powershell это преобразование строки в массив. В моем случае разделитель пробел, но может быть любой другой:

Удаление пробелов в Powershell в начале и конце строки:

Скриптописание и кодинг

Решаем задачи Абрамян на C. Matrix78

Matrix78. Дана матрица размера $$M imes N$$. Упорядочить ее строки так, чтобы их минимальные элементы образовывали убывающую последовательность.

Решаем задачи Абрамян на C. Matrix77

Matrix77. Дана матрица размера $$M imes N$$. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность.

Решаем задачи Абрамян на C. Matrix76

Matrix76. Дана матрица размера $$M imes N$$. Упорядочить ее строки так, чтобы их первые элементы образовывали возрастающую последовательность.

Решаем задачи Абрамян на C. Matrix75

Matrix75. Дана матрица размера $$M imes N$$. Элемент матрицы называется ее локальным максимумом, если он больше всех окружающих его элементов. Поменять знак всех локальных максимумов данной матрицы на противоположный. При решении допускается использовать вспомогательную матрицу.

Решаем задачи Абрамян на C. Matrix74

Matrix74. Дана матрица размера $$M imes N$$. Элемент матрицы называется ее локальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на нули. При решении допускается использовать вспомогательную матрицу.

Решаем задачи Абрамян на C. Matrix73

Matrix73. Дана матрица размера $$M imes N$$. После последнего столбца, содержащего только отрицательные элементы, вставить столбец из нулей. Если требуемых столбцов нет, то вывести матрицу без изменений.

Решаем задачи Абрамян на C. Matrix72

Matrix72. Дана матрица размера $$M imes N$$. Перед первым столбцом, содержащим только положительные элементы, вставить столбец из единиц. Если требуемых столбцов нет, то вывести матрицу без изменений.

Решаем задачи Абрамян на C. Matrix71

Matrix71. Дана матрица размера $$M imes N$$. Продублировать столбец матрицы, содержащий ее минимальный элемент.

Решаем задачи Абрамян на C. Matrix70

Matrix70. Дана матрица размера $$M imes N$$. Продублировать строку матрицы, содержащую ее максимальный элемент.

Решаем задачи Абрамян на C. Matrix69

Matrix69. Дана матрица размера $$M imes N$$ и целое число $$K$$ $$(1 le K le $$N$$)$$. После столбца матрицы с номером $$K$$ вставить столбец из единиц.

Как извлечь подстроку с помощью PowerShell?

У меня есть эта строка.

Мне нужно извлечь.

Каков наилучший способ сделать это?

Оператор -match проверяет регулярное выражение, объединяет его с магической переменной $matches , чтобы получить результат

Всякий раз, когда вы сомневаетесь в вещах regex-y, посмотрите этот сайт: http://www.regular-expressions.info

Метод Substring предоставляет нам способ извлечь определенную строку из исходной строки на основе начальной позиции и длины. Если предоставлен только один аргумент, он считается исходной позицией, а остальная часть строки выводится.

И, наконец, для рекурсии через каталог, который выбирает только файлы .txt и ищет появление "Hello World":

Не уверен, является ли это эффективным или нет, но на строки в PowerShell можно ссылаться с использованием синтаксиса индекса массива, аналогично Python.

Это не совсем интуитивно понятно из-за того факта, что первая буква имеет index = 0 , но это так:

  • Разрешить второй порядковый номер, который длиннее строки, без возникновения ошибки
  • Извлечь подстроки в обратном порядке
  • Извлечь подстроки из конца строки

Вот некоторые примеры:

Выводит результат (значения индекса включены для ясности — не генерируются в выходных данных):

Что можно сделать более полезным, передав -join » :

Есть несколько интересных эффектов, которые вы можете получить, используя разные индексы:

Вперед

Используйте первое значение индекса, которое меньше второго, и подстрока будет извлечена в прямом направлении, как и следовало ожидать. На этот раз второе значение индекса намного превышает длину строки, но ошибки нет:

задом

Если вы предоставите второе значение индекса, которое меньше первого, строка возвращается в обратном порядке:

С конца

Если вы используете отрицательные числа, вы можете ссылаться на позицию с конца строки. Чтобы извлечь ‘World’ , последние 5 букв, мы используем: