PowerShell. Скрипт транслитерации

Создавая учетные записи в Active Directory, а так же различные рассылки вы постоянно задаете логины на транслите, постоянно переводя их в уме. Каждый новый логи, каждая новая рассылка. Иногда ум «дает сбой», а иногда нет. Так было и у меня, пока я все же не плюнул на это дело и не написал скрипт транслита на PowerShell.

Благодаря ему можно забыть о транслитерации в уме и просто использовать Ctrl+C Ctrl+V :)
Транслитерация сделана по госту + пробел заменяется символом подчеркивания.

cls

function global:TranslitToLAT
{
param([string]$inString)
$Translit_To_LAT = @{
[char]'а' = "a"
[char]'А' = "a"
[char]'б' = "b"
[char]'Б' = "b"
[char]'в' = "v"
[char]'В' = "v"
[char]'г' = "g"
[char]'Г' = "g"
[char]'д' = "d"
[char]'Д' = "d"
[char]'е' = "e"
[char]'Е' = "e"
[char]'ё' = "e"
[char]'Ё' = "e"
[char]'ж' = "zh"
[char]'Ж' = "zh"
[char]'з' = "z"
[char]'З' = "z"
[char]'и' = "i"
[char]'И' = "i"
[char]'й' = "i"
[char]'Й' = "i"
[char]'к' = "k"
[char]'К' = "k"
[char]'л' = "l"
[char]'Л' = "l"
[char]'м' = "m"
[char]'М' = "m"
[char]'н' = "n"
[char]'Н' = "n"
[char]'о' = "o"
[char]'О' = "o"
[char]'п' = "p"
[char]'П' = "p"
[char]'р' = "r"
[char]'Р' = "r"
[char]'с' = "s"
[char]'С' = "s"
[char]'т' = "t"
[char]'Т' = "t"
[char]'у' = "u"
[char]'У' = "u"
[char]'ф' = "f"
[char]'Ф' = "f"
[char]'х' = "kh"
[char]'Х' = "kh"
[char]'ц' = "tc"
[char]'Ц' = "tc"
[char]'ч' = "ch"
[char]'Ч' = "ch"
[char]'ш' = "sh"
[char]'Ш' = "sh"
[char]'щ' = "shch"
[char]'Щ' = "shch"
[char]'ъ' = "" # "``"
[char]'Ъ' = "" # "``"
[char]'ы' = "y" # "y`"
[char]'Ы' = "y" # "Y`"
[char]'ь' = "" # "`"
[char]'Ь' = "" # "`"
[char]'э' = "e" # "e`"
[char]'Э' = "e" # "E`"
[char]'ю' = "iu"
[char]'Ю' = "iu"
[char]'я' = "ia"
[char]'Я' = "ia"
[char]' ' = "_"
}
$outChars=""
foreach ($c in $inChars = $inString.ToCharArray())
{
if ($Translit_To_LAT[$c] -cne $Null )
{$outChars += $Translit_To_LAT[$c]}
else
{$outChars += $c}
}
Write-Output $outChars
}

$text = "Текст который нужно транслитерировать"
$log = TranslitToLAT $text
$log

Допиливать и использовать данный скрипт можно как угодно и где угодно, так как сама транслитерация сделана функцией. Дерзайте ;)

  • Зар

    Спасибо за функцию!
    А если нужно поменять местами два слова, преобразовать и первые буквы каждого слова сделать заглавными?

  • Зар

    с заглавными просто — нужно подправить часть char в скрипте :)
    А способ поменять местами, для своей задачи нашел, а вот в общем смысле было бы интересно понять, как разделить исходные данные в одной переменной на слова и сделать из них несколько переменных.

    • OKI

      Тут можно использовать операцию split (описание можно найти тут), ей разбить исходную строку на нужное количество переменных и обрабатывать потом их.