Сегодня разберем тему: Powershell — строки. Пройдемся поэтапно по командлетам, которые обрабатывают строки. Плюс ко всему изучим различные конструкции, которые можно использовать в работе. Иногда бывают уникальные случаи, когда строки необходимо обрабатывать прямо во время выполнения другого командлета.
Powershell — Строки
Часто возникают ситуации, когда строки необходимо обработать. Например, удалить лишние символы, которые возникли в результате ошибок. Или например, входящий массив был заполнен другим человеком и вы хотите удостовериться, что при выполнении не будет каких-либо проблем. Для работы со строками в Powershell есть весьма широкий функционал. Вот стандартный список свойств и методов обработки строк:
-
Как удалить символ из строки? — str.Replace()
1 2 3 4 5 |
$text = "My name is VaPi."; $text My name is VaPi. $text.Replace("VaPi", "Sergey"); My name is Sergey. |
Таким образом в переменной $text имя Vapi поменяется на Sergey и вся переменная преобразуется в следующий вид при попытке вывести ее в консоли:
1 |
"My name is Sergey." |
Такая конструкция будет искать все совпадения и всех их менять на значение указанное после запятой. Можно заменить сразу несколько символов в переменной:
1 2 3 |
$birds = "bird bird bird bird" $birds.Replace("i", "a") bard bard bard bard |
Такой же принцип действует и с массивом:
1 2 3 4 5 6 7 8 9 |
$arr= "1,","2","3," $arr 1, 2 3, $arr.Replace(",", "") 1 2 3 |
-
Как узнать длину строки? — str.Lenght
Это весьма просто свойство строки, которое показывает количество символов в переменной:
1 2 3 |
$text = "Too many of random text" $text.Length 23 |
-
Как обратиться к символу строки по индексу? — str.Chars()
Свойство, которое позволяет обратиться к символу по индексу:
1 2 3 |
$text = "Too many of random text" $text.Chars(7) y |
Постепенно такая конструкция устаревает, потому что можно обращаться к символам переменных по индексу:
1 2 |
$text[4] m |
К тому же у конструкции Chars есть ограничения в виде количества аргументов, которое не позволяет создать перегрузку и постараться вывести сразу 2 символа. Еще из минусов можно отметить, что Chars не воспринимает «промежуток». То есть если вы попытаетесь использовать $str.Chars(5..7), то получите ошибку формата «Не удается преобразовать аргумент «»index»…
А поиндексное обращение позволяет использовать такой синтаксис, что сильно упрощает работу:
1 2 3 4 5 6 7 |
$text[0..5] T o o m a |
Так же можно использовать отрицательный индекс. В таком случае массив символом будет перебираться с конца:
1 2 3 4 5 6 7 8 9 10 11 |
$text[-1..-15] t x e t m o d n a |
-
Как удалить все из строки после определенного индекса? — str.Remove()
Этот метод принимает на вход индекс символа и удаляет все содержимое, которое находится за ним:
1 2 |
$text.Remove(15) Too many of ran |
-
Как вставить значение в строку? — str.Insert()
Instert — метод вставки подстроки в строку, после указанного символа. Дополним только что обрезанную переменную:
1 2 |
$text.Insert(15, "dom object models") Too many of random object models |
-
Как превратить строку в массив? — str.Split()
Метод Split позволяет разбить строку на массив, указывая разделитель. Например, можно использовать пробел в качестве разделителя:
1 2 3 4 5 6 7 |
$text.Split("") Too many of random object models |
Или букву «о»:
1 2 3 4 5 6 7 8 |
$text.Split("o") T many f rand m bject m dels |
-
Как удалить все символы в строке перед индексом? — str.Substring()
Этот метод позволяет получить подстроку из исходной строки, путем удаления всех символом перед указанным индексом:
1 2 |
$text.Substring(15) dom object models |
-
Как копировать строку? — str.Clone()
Позволяет точно скопировать исходную строку:
1 2 3 |
$text2 = $text.Clone() $text2 Too many of random object models |
-
Как сравнить строки с учетом регистра? — str.CompareTo()
Позволяет сравнить строки. Если они совпадают, то в консоль выводится 0. В случае несовпадения метод может выдать -1 (если первая строка больше второй) или 1 (если первая строка меньше второй). Также при использовании этого метода стоит учитывать, что регистр символов влияет на результат сравнения. Если необходимо сравнить строки без учета регистра, то можно воспользоваться статическим методом Compare:
1 2 3 |
$text2 = "Too many models" $text2.CompareTo($text) -1 |
На этом пока все! Если у вас остались вопросы обязательно пишите их в комментариях! В скором времени мы выпустим вторую часть работы со строками. А пока ждем вас в группе в ВК и на нашем Youtube канале!