Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Модерирует : gyra, Maz

Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
# .\script.ps1 'АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ - абвгдеёжзиклмнопрстуфхцчшщъыьэюя'
# .\script.ps1 'ABVGDEYOZHZIKLMNOPRSTUFXCCHSHSHH``Y``E`YUYA - abvgdeyozhziklmnoprstufxcchshshh``y``e`yuya' -rev
# ГОСТ 7.79-2000 тип Б ( https://ru.wikipedia.org/wiki/ISO_9 , http://docs.cntd.ru/document/1200026226 )  
 
[cmdletbinding()]
param(
    [parameter(mandatory=$true,valuefrompipeline=$true)]
    [allowemptystring()]
    [allownull()]
    [string[]]$string,
    [switch]$reverse
)
 
function translit {
    param(
        [parameter(mandatory=$true,valuefrompipeline=$true)]
        [allowemptystring()]
        [allownull()]
        [string]$fstring
    )
    begin {
        $arr1 = @(
            '8979','89111','121111','9072','90104','122104','6790','67122','99122','6772',
            '67104','99104','8372','83104','115104','837272','83104104','115104104','9696','8996',
            '12196','6996','10196','8985','89117','121117','8965','8997','12197'
        )
        $charr = @{
            [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]'Ё' = 'YO'
            [char]'ё' = 'yo'
            [char]'Ж' = 'ZH'
            [char]'ж' = 'zh'
            [char]'З' = 'Z'
            [char]'з' = 'z'
            [char]'И' = 'I'
            [char]'и' = 'i'
            [char]'Й' = 'J'
            [char]'й' = 'j'
            [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]'Х' = 'X'
            [char]'х' = 'x'
            [char]'Ц' = 'C'
            [char]'ц' = 'c'
            [char]'Ч' = 'CH'
            [char]'ч' = 'ch'
            [char]'Ш' = 'SH'
            [char]'ш' = 'sh'
            [char]'Щ' = 'SHH'
            [char]'щ' = 'shh'
            [char]'Ъ' = '``'
            [char]'ъ' = '``'
            [char]'Ы' = 'Y`'
            [char]'ы' = 'y`'
            [char]'Ь' = '`'
            [char]'ь' = '`'
            [char]'Э' = 'E`'
            [char]'э' = 'e`'
            [char]'Ю' = 'YU'
            [char]'ю' = 'yu'
            [char]'Я' = 'YA'
            [char]'я' = 'ya'
        }
        $revcharr = @{
            [char]'A' = 'А'
            [char]'a' = 'а'
            [char]'B' = 'Б'
            [char]'b' = 'б'
            [char]'V' = 'В'
            [char]'v' = 'в'
            [char]'G' = 'Г'
            [char]'g' = 'г'
            [char]'D' = 'Д'
            [char]'d' = 'д'
            [char]'E' = 'Е'
            [char]'e' = 'е'
            $(-join [int[]][char[]]'YO') = 'Ё' <#89-79#>
            $(-join [int[]][char[]]'Yo') = 'Ё' <#89-111#>
            $(-join [int[]][char[]]'yo') = 'ё' <#121-111#>
            $(-join [int[]][char[]]'ZH') = 'Ж' <#90-72#>
            $(-join [int[]][char[]]'Zh') = 'Ж' <#90-104#>
            $(-join [int[]][char[]]'zh') = 'ж' <#122-104#>
            [char]'Z' = 'З'
            [char]'z' = 'з'
            [char]'I' = 'И'
            [char]'i' = 'и'
            [char]'J' = 'Й'
            [char]'j' = 'й'
            [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]'X' = 'Х'
            [char]'x' = 'х'
            [char]'C' = 'Ц'
            $(-join [int[]][char[]]'CZ')    = 'Ц' <#67-90#>
            $(-join [int[]][char[]]'Cz')    = 'Ц' <#67-122#>
            [char]'c' = 'ц'
            $(-join [int[]][char[]]'cz')    = 'ц' <#99-122#>
            $(-join [int[]][char[]]'CH')    = 'Ч' <#67-72#>
            $(-join [int[]][char[]]'Ch')    = 'Ч' <#67-104#>
            $(-join [int[]][char[]]'ch')    = 'ч' <#99-104#>
            $(-join [int[]][char[]]'SH')    = 'Ш' <#83-72#>
            $(-join [int[]][char[]]'Sh')    = 'Ш' <#83-104#>
            $(-join [int[]][char[]]'sh')    = 'ш' <#115-104#>
            $(-join [int[]][char[]]'SHH')    = 'Щ' <#83-72-72#>
            $(-join [int[]][char[]]'Shh')    = 'Щ' <#83-104-104#>
            $(-join [int[]][char[]]'shh')    = 'щ' <#115-104-104#>
            #[char]''     = 'Ъ'
            $(-join [int[]][char[]]'``')    = 'ъ' <#96-96#>  
            $(-join [int[]][char[]]'Y`')    = 'Ы' <#89-96#>
            $(-join [int[]][char[]]'y`')    = 'ы' <#121-96#>
            #[char]'`'     = 'Ь'
            [char]'`'     = 'ь'
            $(-join [int[]][char[]]'E`')    = 'Э' <#69-96#>
            $(-join [int[]][char[]]'e`')    = 'э' <#101-96#>
            $(-join [int[]][char[]]'YU')    = 'Ю' <#89-85#>
            $(-join [int[]][char[]]'Yu')    = 'Ю' <#89-117#>
            $(-join [int[]][char[]]'yu')    = 'ю' <#121-117#>
            $(-join [int[]][char[]]'YA')    = 'Я' <#89-65#>
            $(-join [int[]][char[]]'Ya')    = 'Я' <#89-97#>
            $(-join [int[]][char[]]'ya')    = 'я' <#121-97#>
        }
    }
    process {
        if($reverse){
            $f2,$f3,$j,$m = $true,$true,0,0
            $cnt = $fstring.tochararray().length
            $arrtmp = $fstring.tochararray()
            for($i=0;$i -lt $cnt;$i++){
                if ($f2 -and $f3 -and $arr1 -match "^$([int][char]$arrtmp[$i])") {
                    if (($i+2) -lt $cnt){
                        for ($k=0;$k -le 2;$k++){
                            [string]$str += "$([int][char]$arrtmp[($i+$k)])"
                        }
                        if ($arr1 -contains $str){$f3 = $false}
                        $str = $null
                    }  
                    if (($i+1) -lt $cnt -and $f3){
                        for ($l=0;$l -le 1;$l++){
                            [string]$str += "$([int][char]$arrtmp[($i+$l)])"
                        }
                        if ($arr1 -contains $str){$f2 = $false}
                        $str = $null
                    }
                }  
                if (!$f3){
                    [string]$str += "$([int][char]$arrtmp[$i])";$j++
                    if ($j -ge 3){
                        $f3 = $true;$j = 0
                        $arr += $revcharr[$str]
                        $str = $null
                    }
                } elseif (!$f2){
                    [string]$str += "$([int][char]$arrtmp[$i])";$m++
                    if ($m -ge 2){
                        $f2 = $true;$m = 0
                        $arr += $revcharr[$str]
                        $str = $null
                    }
                } else {
                    if ($revcharr[$arrtmp[$i]] -cne $null){
                        $arr += $revcharr[$arrtmp[$i]]
                    } else {
                        $arr += $arrtmp[$i]
                    }
                }
            }
            $arr += "`n"
        } else {
            $fstring.tochararray()|%{
                if ($charr[$_] -cne $null){
                    $arr += $charr[$_]
                } else {
                    $arr += $_
                }
            }
            $arr += "`n"
        }
    }
    end {write-output $arr.trim("`n")}
}
 
$string|translit

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:17 25-04-2019 | Исправлено: YuS_2, 09:41 27-04-2019
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru