Поиск по сайту:

Как разделить строку в PowerShell


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

Чтобы разделить строку в PowerShell, мы будем использовать оператор -split или метод Split. Это позволяет разделить строку на массив подстрок на основе заданного разделителя, количества подстрок, которые вы хотите вернуть, и некоторых других параметров.

В этой статье мы рассмотрим, как просто разделить строку в Powershell и некоторые продвинутые опции.

PowerShell Разбиение строки

Оператор -split или метод Split() являются встроенным способом разделения строки на массив подстрок. Вы предоставляете разделитель (или регулярное выражение), чтобы определить, где строку следует разделить.

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

$string = "The best PowerShell blog"
$string -split " "

Result
The
best
PowerShell
blog

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

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

$string = "Delivery-contract-20230401"
$splitArray = $string.Split("-")

Select the last item from the array
$splitArray[-1]

Result
20230401

Хорошо знать, что если вы не укажете разделитель, то процесс будет разделять и по пробелам. Оператор разделения по умолчанию не учитывает регистр, если вам нужно учитывать регистр, используйте оператор -csplit.

В некоторых случаях вы можете захотеть разделить строку по запятой или другому разделителю, но каждая подстрока начинается с пробела. Чтобы удалить пробелы из каждой подстроки, лучше всего использовать метод Trim():

$string = "apple,banana,cherry,date"
$string.split(',')

Result 
apple
 banana
 cherry
 date

Remove space by including trim:
$string.split(',').trim()

Использование нескольких разделителей

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

$string = "apple,banana,cherry|date"
$string -split "[,|]"

Result
apple
banana
cherry
date

Регулярные выражения могут быть использованы для определения пользовательских шаблонов, по которым вы хотите разбить строку. Я не буду углубляться в детали о том, как работают регулярные выражения, но я покажу вам несколько примеров, чтобы вы могли начать:

Split on multiple spaces or tabs:
$string = "This    is     a   string   with     multiple     spaces     and     tabs"
$string -split "\s+"

Split on decimals:
$string = "Hello123World456Test789"
$string -split "\d+"

Split on sentences:
$string = "This is a sentence. And here is another one! Finally, a third sentence."
$splitArray = $string -split "(?<=[.!?])\s+"

Ограничить результаты

По умолчанию метод split вернет все подстроки, но что если вам нужна только первая часть? Для этого мы можем использовать параметр Maxsubstrings, который ограничит количество возвращаемых подстрок.

Вы можете использовать положительное число, чтобы начать отсчет с начала строки, и отрицательное число, чтобы начать отсчет с конца строки. Например, мы хотим только отделить дату от имени файла:

$string = "20230401-La-srv-dc01 Event Log.log"
$string -split "-", 2

Result
20230401
La-srv-dc01 Event Log.log

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

Завершение

Разделение строки в PowerShell довольно просто с помощью метода или оператора split. Если вам нужны только первые n символов строки, то стоит использовать метод substring в PowerShell.

Надеюсь, вы нашли эту статью полезной. Если у вас есть вопросы, просто оставьте комментарий ниже.