Разделение строкового символа по символу в Powershell - PullRequest
2 голосов
/ 03 августа 2020

Что я хочу сделать: у меня есть строка, например «peter», и я хочу вывести 1-й символ (p) в переменной. Затем первые 2 символа (pe) et c. до конца строки (Петр). В итоге у меня будет 5 разных переменных. Может ли кто-нибудь помочь мне, как это сделать в PowerShell?

Я пробовал:

$Inputstring ="peter"
$CharArray =$InputString.ToCharArray()
$CharArray

но это дало мне

p
e
t
e
r

Это выглядит хорошо :

$TstString = "peter"

$CharArray = $TstString.ToCharArray()
$CharArray[0]
$CharArray[0] + $CharArray[1]
$CharArray[0] + $CharArray[1]+ $CharArray[2]
$CharArray[0] + $CharArray[1]+ $CharArray[2]+ $CharArray[3]
$CharArray[0] + $CharArray[1]+ $CharArray[2]+ $CharArray[3] + $CharArray[4]

p
pe
pet
pete
peter

Я хочу использовать это для проверки ActiveDirectory на существующий адрес электронной почты и, если он существует, например, p@dom.com; pe@dom.com ....

Ответы [ 3 ]

2 голосов
/ 03 августа 2020

Вот вам альтернативный подход

$str = 'peter'
$result = for ($len = 1; $len -le $str.Length; $len++) { $str.Substring(0, $len) }
2 голосов
/ 03 августа 2020

Вот быстрый способ создать все строки префиксов для данной строки:

PS> $prefix = ''; ([char[]] 'peter').ForEach({ ($prefix += $_) })
p
pe
pet
pete
peter

$prefixes = ([char[] ... захватит все префиксы в виде массива строк для последующей обработки; в качестве альтернативы вы можете выполнить обработку непосредственно внутри блока .ForEach() (затем удалите (...) вокруг присваивания +=, цель которого также вывести результат присваивания).

1 голос
/ 03 августа 2020

вот еще один способ сделать это. [ ухмылка ] что он делает ...

  • определяет строку для работы с циклами
  • через количество символов в строке
  • использует способ, которым Po Sh может индексировать строку, обрабатывая ее как массив символов для построения строки
  • объединяет символы в одну строку
  • отправляет это в коллекцию
  • показывает содержимое этого на экране.

вы можете адресовать каждый вариант с помощью $Result[$Index], поэтому нет необходимости в сложной орде переменных. [ ухмылка ]

код ...

$InString = 'peter'

$Result = foreach ($Index in 0..($InString.Length - 1))
    {
    -join $InString[0..$Index]
    }

$Result

вывод ...

p
pe
pet
pete
peter
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...