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

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

03.12.2025, 10:30. Показов 2776. Ответов 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
2802 / 500 / 120
Регистрация: 26.09.2020
Сообщений: 943
Записей в блоге: 5
05.12.2025, 10:33  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от YuS_2 Посмотреть сообщение
Допустим, строка должна стать длиной 45 символов онли текстовых символов.
У нас должно получиться, что? Это:
Да, это.
0
 Аватар для volodin661
6671 / 2263 / 346
Регистрация: 10.12.2013
Сообщений: 7,824
05.12.2025, 11:13
Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
volodin661, не знаю, чего не понятно.
В строке с ANSI эскейп‑последовательностями: подсчитывать длину, обрезать, выравнивать пробелами, всё для видимых знаков, сохраняя цвета, переносы строк.
Я не про целевую задачу, а про исходную,
а именно, откуда появилась раскрашенная строка, кто покрасил и почему теперь понадобилось по раскрашенному её изучать?
0
Любознательный
 Аватар для YuS_2
7404 / 2251 / 360
Регистрация: 10.03.2016
Сообщений: 5,209
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
2802 / 500 / 120
Регистрация: 26.09.2020
Сообщений: 943
Записей в блоге: 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
7404 / 2251 / 360
Регистрация: 10.03.2016
Сообщений: 5,209
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
2802 / 500 / 120
Регистрация: 26.09.2020
Сообщений: 943
Записей в блоге: 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
7404 / 2251 / 360
Регистрация: 10.03.2016
Сообщений: 5,209
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
2802 / 500 / 120
Регистрация: 26.09.2020
Сообщений: 943
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru