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 |
|