Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
2806 / 504 / 121
Регистрация: 26.09.2020
Сообщений: 951
Записей в блоге: 5

Расчёт длины c ANSI эскейп‑последовательностями

03.12.2025, 10:30. Показов 3286. Ответов 47

Студворк — интернет-сервис помощи студентам

Как рассчитать длину только видимой части строки c ANSI escape‑последовательностями?



Пример вывода длины строки, включая невидимые символы:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
.{
    $e = [char] 27
 
    $reset = "$e[0m"
    $bold  = "$e[1m"
 
    $black   = "$e[30m"
    $red     = "$e[31m"
    $green   = "$e[32m"
    $yellow  = "$e[33m"
    $blue    = "$e[34m"
    $magenta = "$e[35m"
    $cyan    = "$e[36m"
    $gray    = "$e[37m"
 
    $darkGray      = "$e[90m"
    $brightRed     = "$e[91m"
    $brightGreen   = "$e[92m"
    $brightYellow  = "$e[93m"
    $brightBlue    = "$e[94m"
    $brightMagenta = "$e[95m"
    $brightCyan    = "$e[96m"
    $white         = "$e[97m"
 
    $string = '`n${bold}${red}TEST-11${reset}`n${yellow}TEST-21${reset}`n${green}TEST-31${reset}`n'
    $expanded = $ExecutionContext.InvokeCommand.ExpandString($string)
    [string[]] $lines = $expanded -split '\r?\n'
 
    Clear-Host
    Write-Host $expanded
 
    Write-Host ("Всего строк: {0}" -f $lines.Count)
 
    for ($i = 1; $i -le $lines.Count; $i++) {
        Write-Host ('Длина строки {0}: {1} символов' -f $i, ($lines[$i-1].Length))
    }
}
«TEST-11» — 7 знаков должно быть.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2025, 10:30
Ответы с готовыми решениями:

Перекодировка текстового файла из ANSI в UTF-8
Здравствуйте, я нашел такой BAT файл, который перекодирует txt файл из ANSI в UNICODE Как его можно...

Батником поменять кодировку с utf-8 в ansi, и наоборот
Подскажите пожалуйста как батником поменять кодировку с utf-8 в ansi, и наоборот?! файл текстовый...

Преобразовать текстовый файл из ANSI в UTF-8
Здравствуйте, подскажите, как из командной строки преобразовать текстовый файл из ANSI в UTF-8?...

47
2806 / 504 / 121
Регистрация: 26.09.2020
Сообщений: 951
Записей в блоге: 5
05.12.2025, 10:33  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от YuS_2 Посмотреть сообщение
Допустим, строка должна стать длиной 45 символов онли текстовых символов.
У нас должно получиться, что? Это:
Да, это.
0
 Аватар для volodin661
6808 / 2309 / 350
Регистрация: 10.12.2013
Сообщений: 7,965
05.12.2025, 11:13
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
volodin661, не знаю, чего не понятно.
В строке с ANSI эскейп‑последовательностями: подсчитывать длину, обрезать, выравнивать пробелами, всё для видимых знаков, сохраняя цвета, переносы строк.
Я не про целевую задачу, а про исходную,
а именно, откуда появилась раскрашенная строка, кто покрасил и почему теперь понадобилось по раскрашенному её изучать?
0
Любознательный
 Аватар для YuS_2
7406 / 2260 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
05.12.2025, 12:57
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
Да, это.
Ну, тогда в черновую, примерно так:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
$e = [char]27
$a = "Строка- $e[38;5;214mHello, world$e[0m здесь тоже строка $e[38;5;112mtest & test$e[0m и ещё строка"
$lim = 45
# образец результата:
$res = "Строка- $e[38;5;214mHello, world$e[0m здесь тоже строка $e[38;5;112mtest &$e[0m"
 
"Исходная строка:"
$a
"- расчетная длина полностью: $($a.length)"
""
"Строка без спецсимволов:"
$a -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?','$2'
"- расчетная длина без спецсимволов: $(($a -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?','$2').length)"
""
"================"
"Образец целевой строки в 45 символов:"
$res
"- расчетная длина без спецсимволов: $(($res -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?','$2').length)"
""
"================"
 
$arr = $a -replace '(?<!^)(\e)(?!\[0)',"`n`$1" -replace '(\e\[0m)',"`$1`n" -split "`n"
$lngh,$rarr = 0,@()
foreach ($item in $arr){
    if($lngh -lt $lim){
        $l,$d = 0,0
        if ($item -match '\e'){
            $null = $item -replace "(\e[^m]+m)([^\e]+)(\e\[0m)?",{
                $l = ([string]$_.groups[2]).length
                $lngh += $l
                if(($d = $lim - $lngh) -lt 0){
                    $rarr += [string]$_.groups[1]+([string]$_.groups[2]).substring(0,(
                        $l-[math]::abs($d)
                    ))+$_.groups[3]
                    break
                } elseif ($d -eq 0){
                    $rarr += [string]$_.groups[0]
                    break
                } else {$rarr += [string]$_.groups[0]}
            }           
        } else {
            $l = $item.length
            $lngh += $l
            if(($d = $lim - $lngh) -lt 0){
                $rarr += $item.substring(0,$l-[math]::abs($d))
                break
            } elseif ($d -eq 0){
                $rarr += $item
                break
            } else {$rarr += $item}
        }
    }
}
"Результат работы кода:"
$out = $rarr -join ''
$out
"- расчетная длина без спецсимволов: $(($out -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?','$2').length)"
Добавлено через 1 час 4 минуты
а, да, совсем забыл, этот вариант для PS 7, где реплэйсинг со скриптблоками работает.
А ежели есть потребность в windows powershell 5.1, то действовать надо через матчинг... в общем, всё то же самое, но:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
$e = [char]27
$a = "Строка- $e[38;5;214mHello, world$e[0m здесь тоже строка $e[38;5;112mtest & test$e[0m и ещё строка"
$lim = 45
# образец результата:
$res = "Строка- $e[38;5;214mHello, world$e[0m здесь тоже строка $e[38;5;112mtest &$e[0m"
 
"Исходная строка:"
$a
"- расчетная длина полностью: $($a.length)"
""
"Строка без спецсимволов:"
$a -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?','$2'
"- расчетная длина без спецсимволов: $(($a -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?','$2').length)"
""
"================"
"Образец целевой строки в 45 символов:"
$res
"- расчетная длина без спецсимволов: $(($res -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?','$2').length)"
""
"================"
 
$arr = $a -replace '(?<!^)(\e)(?!\[0)',"`n`$1" -replace '(\e\[0m)',"`$1`n" -split "`n"
$lngh,$rarr = 0,@()
foreach ($item in $arr){
    if($lngh -lt $lim){
        $l,$d = 0,0
        if ($item -match '\e'){
            $null = $item -match "(\e[^m]+m)([^\e]+)(\e\[0m)?"
            $l = ([string]$matches[2]).length
            $lngh += $l
            if(($d = $lim - $lngh) -lt 0){
                $rarr += [string]$matches[1]+([string]$matches[2]).substring(0,(
                    $l-[math]::abs($d)
                ))+$matches[3]
                break
            } elseif ($d -eq 0){
                $rarr += [string]$matches[0]
                break
            } else {$rarr += [string]$matches[0]}
                    
        } else {
            $l = $item.length
            $lngh += $l
            if(($d = $lim - $lngh) -lt 0){
                $rarr += $item.substring(0,$l-[math]::abs($d))
                break
            } elseif ($d -eq 0){
                $rarr += $item
                break
            } else {$rarr += $item}
        }
    }
}
"Результат работы кода:"
$out = $rarr -join ''
$out
"- расчетная длина без спецсимволов: $(($out -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?','$2').length)"
- будет работать в powershell 5.1
1
2806 / 504 / 121
Регистрация: 26.09.2020
Сообщений: 951
Записей в блоге: 5
05.12.2025, 13:23  [ТС]
Цитата Сообщение от YuS_2 Посмотреть сообщение
Ну, тогда в черновую, примерно так:
А если:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
. {
    $string = '${bold}${red}TEST-11${reset}`n${yellow}TEST-21${reset}`n${green}TEST-31${reset}'
 
    $e = [char] 27
 
    $reset = "$e[0m"
    $bold  = "$e[1m"
 
    $black   = "$e[30m"
    $red     = "$e[31m"
    $green   = "$e[32m"
    $yellow  = "$e[33m"
    $blue    = "$e[34m"
    $magenta = "$e[35m"
    $cyan    = "$e[36m"
    $gray    = "$e[37m"
 
    $darkGray      = "$e[90m"
    $brightRed     = "$e[91m"
    $brightGreen   = "$e[92m"
    $brightYellow  = "$e[93m"
    $brightBlue    = "$e[94m"
    $brightMagenta = "$e[95m"
    $brightCyan    = "$e[96m"
    $white         = "$e[97m"
 
    $expanded = $ExecutionContext.InvokeCommand.ExpandString($string)
    $lim = 6
    [string[]] $lines = $expanded -split '\r?\n'
 
    foreach ($a in $lines) {
    'Исходная строка:'
    $a
    "- расчетная длина полностью: $($a.length)"
    ''
    'Строка без спецсимволов:';
    $a -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?', '$2'
    "- расчетная длина без спецсимволов: $(($a -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?','$2').length)"
    ''
    '================'
 
    $arr = $a -replace '(?<!^)(\e)(?!\[0)', "`n`$1" -replace '(\e\[0m)', "`$1`n" -split "`n"
    $lngh, $rarr = 0, @()
    foreach ($item in $arr) {
        if ($lngh -lt $lim) {
            $l, $d = 0, 0
            if ($item -match '\e') {
                $null = $item -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?', {
                    $l = ([string]$_.groups[2]).length
                    $lngh += $l
                    if (($d = $lim - $lngh) -lt 0) {
                        $rarr += [string]$_.groups[1] + ([string]$_.groups[2]).substring(0, (
                                $l - [math]::abs($d)
                            )) + $_.groups[3]
                        break
                    } elseif ($d -eq 0) {
                        $rarr += [string]$_.groups[0]
                        break
                    } else { $rarr += [string]$_.groups[0] }
                }
            } else {
                $l = $item.length
                $lngh += $l
                if (($d = $lim - $lngh) -lt 0) {
                    $rarr += $item.substring(0, $l - [math]::abs($d))
                    break
                } elseif ($d -eq 0) {
                    $rarr += $item
                    break
                } else { $rarr += $item }
            }
        }
    }
    'Результат работы кода:'
    $out = $rarr -join ''
    $out
    "- расчетная длина без спецсимволов: $(($out -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?','$2').length)"
}
}
мне нужно раскрытие переменных. откуда-то жирный белый...
0
Любознательный
 Аватар для YuS_2
7406 / 2260 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
05.12.2025, 16:10
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
мне нужно раскрытие переменных
Дык в чем проблема? Я запустил твой код целиком, как есть... никаких белых жирных не вижу. Увидел... попробую найти, откуда там ноги выросли.
И кстати, ты взял первый вариант, с реплэйсингом... возьми второй с матчингом, он по функционалу монопенисуальный, но более простой, за счет $matches и к тому же универсальный, то бишь будет работать и в PS v5.1

Добавлено через 10 минут
ага, вот тут они появляются:
PowerShell
1
2
3
4
...
    'Строка без спецсимволов:';
    $a -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?', '$2'
...
Можно даже побороться с этой засадой, вот так:
PowerShell
1
    $a -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?', "`$2${reset}"
или так:
PowerShell
1
    $a -replace '(\e[^m]+m)([^\e]+)(\e\[0m)?', "${reset}`$2"
Но почему внезапно жирный белый... пока не понимаю...

Добавлено через 2 минуты
Вот, где засада:
${bold}${red}
Два подряд эскейпа в регулярке не предусмотрен... надо подумать, как их вытравливать...

Добавлено через 6 минут
Пробуй:
PowerShell
1
    $a -replace '((?:\e[^m]+m)+)([^\e]+)(\e\[0m)?', '$2'
желательно везде, где есть подобный шаблон заменить...



PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
. {
    $string = '${bold}${red}TEST-11${reset}`n${yellow}TEST-21${reset}`n${green}TEST-31${reset}'
 
    $e = [char] 27
 
    $reset = "$e[0m"
    $bold  = "$e[1m"
 
    $black   = "$e[30m"
    $red     = "$e[31m"
    $green   = "$e[32m"
    $yellow  = "$e[33m"
    $blue    = "$e[34m"
    $magenta = "$e[35m"
    $cyan    = "$e[36m"
    $gray    = "$e[37m"
 
    $darkGray      = "$e[90m"
    $brightRed     = "$e[91m"
    $brightGreen   = "$e[92m"
    $brightYellow  = "$e[93m"
    $brightBlue    = "$e[94m"
    $brightMagenta = "$e[95m"
    $brightCyan    = "$e[96m"
    $white         = "$e[97m"
 
    $expanded = $ExecutionContext.InvokeCommand.ExpandString($string)
    $lim = 6
    [string[]] $lines = $expanded -split '\r?\n'
 
    $regrep = '((?:\e(?!\[0)[^m]+m)+)([^\e]+)(\e\[0m)?'
    $regb = '((?:\e(?!\[0)[^m]+m)+)'
    $rege = '(\e\[0m)'
 
    foreach ($a in $lines) {
    '================'
    'Исходная строка:'
    $a
    "- расчетная длина полностью: $($a.length)"
    ''
    'Строка без спецсимволов:';
    $a -replace $regrep, '$2'
    "- расчетная длина без спецсимволов: $(($a -replace $regrep,'$2').length)"
    ''
    '----------------'
 
    $arr = $a -replace $regb, "`n`$1" -replace $rege, "`$1`n" -split "`n"
    $lngh, $rarr = 0, @()
    foreach ($item in $arr) {
        if ($lngh -lt $lim) {
            $l, $d = 0, 0
            if ($item -match '\e') {
                $null = $item -match $regrep
                $l = ([string]$matches[2]).length
                $lngh += $l
                if(($d = $lim - $lngh) -lt 0){
                    $rarr += [string]$matches[1]+([string]$matches[2]).substring(0,(
                        $l-[math]::abs($d)
                    ))+$matches[3]
                    break
                } elseif ($d -eq 0){
                    $rarr += [string]$matches[0]
                    break
                } else {$rarr += [string]$matches[0]}       
            } else {
                $l = $item.length
                $lngh += $l
                if (($d = $lim - $lngh) -lt 0) {
                    $rarr += $item.substring(0, $l - [math]::abs($d))
                    break
                } elseif ($d -eq 0) {
                    $rarr += $item
                    break
                } else { $rarr += $item }
            }
        }
    }
    'Результат работы кода:'
    $out = $rarr -join ''
    $out
    "- расчетная длина без спецсимволов: $(($out -replace $regrep,'$2').length)"
    ''
}
}
Добавлено через 36 минут
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
мне нужно раскрытие переменных. откуда-то жирный белый...
да, если требуется обратное преобразование спецсимволов в текст, с выводом в консоль...
по примеру:
PowerShell
1
$expanded -replace '\e','`e' -replace '\n','`n'
- получишь исходную строку с эскейп-символами
1
2806 / 504 / 121
Регистрация: 26.09.2020
Сообщений: 951
Записей в блоге: 5
06.12.2025, 16:32  [ТС]
YuS_2, работает
Я только граничные случаи нашёл: '${red}[ERROR]${reset} File not found${reset}'
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
. {
    $string = '${red}[ERROR]${reset} File not found${reset}'
 
    $e = [char] 27
 
    $reset = "$e[0m"
    $bold = "$e[1m"
 
    $black = "$e[30m"
    $red = "$e[31m"
    $green = "$e[32m"
    $yellow = "$e[33m"
    $blue = "$e[34m"
    $magenta = "$e[35m"
    $cyan = "$e[36m"
    $gray = "$e[37m"
 
    $darkGray = "$e[90m"
    $brightRed = "$e[91m"
    $brightGreen = "$e[92m"
    $brightYellow = "$e[93m"
    $brightBlue = "$e[94m"
    $brightMagenta = "$e[95m"
    $brightCyan = "$e[96m"
    $white = "$e[97m"
 
    $expanded = $ExecutionContext.InvokeCommand.ExpandString($string)
    $lim = 12
    [string[]] $lines = $expanded -split '\r?\n'
 
    $regrep = '((?:\e(?!\[0)[^m]+m)+)([^\e]+)(\e\[0m)?'
    $regb = '((?:\e(?!\[0)[^m]+m)+)'
    $rege = '(\e\[0m)'
 
    foreach ($a in $lines) {
        '================'
        'Исходная строка:'
        $a
        "- расчетная длина полностью: $($a.length)"
        ''
        'Строка без спецсимволов:'
        $a -replace $regrep, '$2'
        "- расчетная длина без спецсимволов: $(($a -replace $regrep,'$2').length)"
        ''
        '----------------'
 
        $arr = $a -replace $regb, "`n`$1" -replace $rege, "`$1`n" -split "`n"
        $lngh, $rarr = 0, @()
        foreach ($item in $arr) {
            if ($lngh -lt $lim) {
                $l, $d = 0, 0
                if ($item -match '\e') {
                    $null = $item -match $regrep
                    $l = ([string]$matches[2]).length
                    $lngh += $l
                    if (($d = $lim - $lngh) -lt 0) {
                        $rarr += [string]$matches[1] + ([string]$matches[2]).substring(0, (
                                $l - [math]::abs($d)
                            )) + $matches[3]
                        break
                    } elseif ($d -eq 0) {
                        $rarr += [string]$matches[0]
                        break
                    } else { $rarr += [string]$matches[0] }
                } else {
                    $l = $item.length
                    $lngh += $l
                    if (($d = $lim - $lngh) -lt 0) {
                        $rarr += $item.substring(0, $l - [math]::abs($d))
                        break
                    } elseif ($d -eq 0) {
                        $rarr += $item
                        break
                    } else { $rarr += $item }
                }
            }
        }
        'Результат работы кода:'
        $out = $rarr -join ''
        $out
        "- расчетная длина без спецсимволов: $(($out -replace $regrep,'$2').length)"
        ''
    }
}
Но, как ты заметил, душа к регуляркам не лежит Но никто другого не предлагает.

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function Get-AnsiVisibleLength {
    param ( [string] $Text )
 
    $esc = [char] 27
    $len = 0
    $i = 0
 
    while ($i -lt $Text.Length) {
        $ch = $Text[$i]
 
        if ($ch -eq $esc -and $i + 1 -lt $Text.Length -and $Text[$i + 1] -eq '[') {
            $i += 2
 
            while ($i -lt $Text.Length -and $Text[$i] -ne 'm') {
                $i++
            }
 
            if ($i -lt $Text.Length) {
                $i++
            }
 
            continue
        }
 
        $len++
        $i++
    }
 
    return $len
}
 
function PadAnsiRight {
    param (
        [string] $Text,
        [int] $Width,
        [char] $PadChar = ' '
    )
 
    $len = Get-AnsiVisibleLength -Text $Text
 
    if ($len -ge $Width) {
        return $Text
    }
 
    $padCount = $Width - $len
 
    return $Text + ($PadChar * $padCount)
}
 
function PadAnsiLeft {
    param (
        [string] $Text,
        [int] $Width,
        [char] $PadChar = ' '
    )
 
    $len = Get-AnsiVisibleLength -Text $Text
 
    if ($len -ge $Width) {
        return $Text
    }
 
    $padCount = $Width - $len
 
    return ($PadChar * $padCount) + $Text
}
0
Любознательный
 Аватар для YuS_2
7406 / 2260 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
07.12.2025, 11:51
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
Я только граничные случаи нашёл: '${red}[ERROR]${reset} File not found${reset}'
Ну, это не граничные случаи, это элементарная невнимательность... то бишь, неверное, ошибочное назначение спецсимволов.
При желании, конечно, можно предусмотреть и такие случаи, в смысле попытаться обрабатывать их в коде, но думаю это излишне. Можно просто придерживаться неких стандартов, а при выходе за их рамки - считать исключением, в результате человеческого фактора.

Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
Но, как ты заметил, душа к регуляркам не лежит
Зря-зря, при работе с текстом, регулярки - первейшее дело.
Но никто не запрещает обходиться и без них, хотя в некоторых случаях, это, возможно, будет чуть сложнее, но ничего невозможного нет же. Коды необходимых символов перечислить вполне можно, отслеживать их в строке - запросто и без регулярок, а уж резать строку на части - по силам тому же -split или .split(), а далее просто включить фантазию и кодить-кодить, пока не получится то, что требуется.

В твоих функциях засада:
The operation '[System.Char] * [System.Int32]' is not defined.
замени параметр [char] на [string] и ограничь его длиной 1

Ну и да, я же говорил, что приляпать символов к строке - не проблема, проблема - это когда её резать придется "по живому", особенно в расцвеченном интервале...

Добавлено через 5 минут
Цитата Сообщение от YuS_2 Посмотреть сообщение
При желании, конечно, можно предусмотреть и такие случаи, в смысле попытаться обрабатывать их в коде
PowerShell
1
$regrep = '((?:\e(?!\[0)[^m]+m)+)?([^\e]+)?(\e\[0m)?'
0
2806 / 504 / 121
Регистрация: 26.09.2020
Сообщений: 951
Записей в блоге: 5
07.12.2025, 14:47  [ТС]
Цитата Сообщение от YuS_2 Посмотреть сообщение
В твоих функциях засада
Я заметил, забыл тут исправить просто кастую: $Text + ([string] $PadChar * $padCount)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2025, 14:47
Помогаю со студенческими работами здесь

Иероглифы в батнике (ANSI)
Привет всем. Помогите разобраться: нашел на просторах иннета батник для блокирования файла...

Как поменять кодировку всех текстовых файлов в папке (с UTF-8 на ANSI)
Добрый день уважаемые программисты и люди связанные с пк индустрией. Возникла потребность...

Написать программу (скрипт) расчета разности размеров самого большого и самого маленького файлов папки
ПОМОГИТЕ)))

Написать программу (скрипт) расчета разности первого и второго по размерам файла папки
Пожалуйста,помогите!! Создать текстовый файл результатов тестирования локальной сети помещенных...

Расчёт дат для их использования в именах файлов и папок при переименовании
День добрый!!! мне нужна помощь, подскажите как написать БАТНИК, что бы можно было копировать одну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Новые блоги и статьи
[golang] Двоичная куча, min-heap
alhaos 20.05.2026
Двоичная куча Двоичная куча — структура данных, которая всегда держит самый важный элемент наготове. Представьте очередь к хилеру в игре, и очередь из игроков в приоритете те у кого меньше. . .
[golang] Breadth-First Search
alhaos 19.05.2026
BFS (Breadth-First Search) — это базовый алгоритм обхода графа в ширину, который поуровнево исследует все связанные вершины. Он начинает с выбранной точки и проверяет всех соседей, прежде чем. . .
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru