@1rayman1

Powershell как заменить 2 последних символа в каждом слове?

Помогите пожалуйста, у меня есть переменная которая содержит ФИО в виде "Иванов Иван Иванович", не могу придумать из-за слабого знания языка как заменить 2 последних символа каждого слова на * что бы в итоге получилось так "Иван* Ив* Иванов*
  • Вопрос задан
  • 346 просмотров
Решения вопроса 2
@MaxKozlov Куратор тега PowerShell
"Иванов Иван Иванович" -replace '\w{2}(\s|$)','*$1'

Иван* Ив* Иванов*
Ответ написан
@1rayman1 Автор вопроса
В общем для чего мне это было нужно, я хочу брать из служебной записки ворд ФИО которое укажет пользователь, следовательно пользователи бывают разные и ФИО могут указать не в именительном падеже, поэтому я принял решение обрезать 2 буквы от каждого слова и заменять звездочками, пробовал на разных ФИО в АД вроде без проблем ищет в 100% случаев нужного мне человека, возможно мой код полнейший колхоз))) но я до этого дошел сам и это главное))) у кого будут предложения по оптимизации, всегда рад
P.S. на названия переменных внимания не обращайте)) это из черновика
$familiya = $fio |% {"{0}" -f $_.split(' ')} |% {$_.Substring(0, $_.length - 2) }
$imya = $fio |% {"{1}" -f $_.split(' ')} |% {$_.Substring(0, $_.length - 2) }
$otchestvo = $fio |% {"{2}" -f $_.split(' ')} |% {$_.Substring(0, $_.length - 4) }
$searchname = "$($familiya)* $($imya)* $($otchestvo)*"
$aduser = Get-ADUser -Filter {Name -like $searchname} -Properties Description
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
EPIDEMIASH
@EPIDEMIASH
Человек швейцарский нож
Разбейте сначала свою переменную на массив, поменяйте через replace и снова соберите в строку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы