изучение powershell, день1

 


Слышал про язык давно, но все как-то руки не доходили. Вот вчера созрел, решил попробовать свои силы. Интернеты выдали кучу ссылок на книги и на ресурсы с уроками и статьями, с чего начать? Начну с простой задачи - коррекция введенной строки по правилам имен msdos и венды: строка не содержит *, ?, : и других.

И тут первая засада: $f = $f.replace($w.chars($i),'') не работает, ругается на пустую строку, хотя многие ресурсы утверждают, что так и должно быть. Решение 1 - указать строку замены '_', но тогда получится не та строка, что нужна. Чтение доков и пробы с функциями вывели на код(оставлю на память):

$w =':<>?*|"\/'
$f='huj*,pizda?skoworoda:'
$f
$i=0
$c=''
while($i -lt $f.length)
{
 #https://windowsnotes.ru/powershell-2/rabota-so-strokami-v-powershell/
#$f = $f.replace($w.chars($i),'\0')
$p=$w.indexof($f.chars($i))
if ($p -ge 0)
{
#$f.chars($p)
$i=$i+1
} else
{
$c=$c+$f.chars($i)
 $i=$i+1
}
}
$c

Кстати, ссылка в комментарии всего лишь лишняя, потому что внятного ничего не написано. Казалось бы, результат есть, но как-то коряво.Сократил код:

$w =':<>?*|"\/'
$f='huj*,pizda?skoworoda:'
$f
#$i=0
$c=''
#while($i -lt $f.length)
for ($i=0;$i -lt $f.length;$i++)
{
 #https://windowsnotes.ru/powershell-2/rabota-so-strokami-v-powershell/
#$f = $f.replace($w.chars($i),'\0')
$p=$w.indexof($f.chars($i))
if ($p -lt 0)
{
#$f.chars($p)
#$i=$i+1
#} else
#{
$c=$c+$f.chars($i)
# $i=$i+1
}
}
$c

А зачем мне лишняя строковая переменная? муки с вызовами вывели на:

$w =':<>?*|"\/'
$f='huj*,pizda?skoworoda:'
$f
$i=0
while($i -lt $f.length)
#for ($i=0;$i -lt $f.length;$i++)
{
 #https://windowsnotes.ru/powershell-2/rabota-so-strokami-v-powershell/
#$f = $f.replace($w.chars($i),'\0')
$p=$w.indexof($f.chars($i))
if ($p -ge 0)
{
$f=$f.remove($i,1)
}
else
{
$i=$i+1
}
}
$f

Как-то так. А на сладкое я оставил GUI формы. Может, осилю?

Комментарии