Не уверен, является ли это эффективным или нет, но на строки в PowerShell можно ссылаться с использованием синтаксиса индекса массива, аналогично Python.
Это не полностью интуитивно понятно из-за того факта, что первая буква упоминается index = 0
, но это так:
- Разрешить второй порядковый номер, который длиннее строки, без генерации ошибки
- Извлечение подстрок в обратном порядке
- Извлечение подстрок из конца строки
Вот несколько примеров:
PS > 'Hello World'[0..2]
Возвращает результат (значения индекса включены для ясности - не генерируются в выходных данных):
H [0]
e [1]
l [2]
Что можно сделать более полезным, передав -join ''
:
PS > 'Hello World'[0..2] -join ''
Hel
Есть несколько интересных эффектов, которые вы можете получить, используя разные индексы:
Нападающие
Используйте первое значение индекса, которое меньше второго, и подстрока будет извлечена в прямом направлении, как и следовало ожидать. На этот раз второе значение индекса намного превышает длину строки, но ошибки нет:
PS > 'Hello World'[3..300] -join ''
lo World
В отличие:
PS > 'Hello World'.Substring(3,300)
Exception calling "Substring" with "2" argument(s): "Index and length must refer to a location within
the string.
Backwards
Если вы предоставите второе значение индекса, которое меньше первого, строка возвращается в обратном порядке:
PS > 'Hello World'[4..0] -join ''
olleH
С конца
Если вы используете отрицательные числа, вы можете ссылаться на позицию от конца строки . Чтобы извлечь 'World'
, последние 5 букв мы используем:
PS > 'Hello World'[-5..-1] -join ''
World