Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Преобразовать номера телефонов в удобочитаемый вид (http://forum.oszone.net/showthread.php?t=352644)

yurfed 22-12-2022 00:01 2999458

Преобразовать номера телефонов в удобочитаемый вид
 
Есть список телефонов такого формата
ИМЯ
12223334455

И дальше вниз, через пустую строку, такого же плана.
Надо
ИМЯ
1-222-333-44-55


Можно и руками, но телефонов очень много.

Serguei Kouzmine 22-12-2022 03:58 2999466

MZу похоже задавали это задачу когда он цмд писал

Код:

set X=12223334455
set Y0=%X:~0,1%
set Y1=%X:~1,3%
set Y2=%X:~4,3%
set Y3=%X:~7,2%
set Y4=%X:~9,2%
echo %Y0%-%Y1%-%Y2%-%Y3%-%Y4%

Код:

1-222-333-44-55
как говорится дальше сами

DJ Mogarych 22-12-2022 09:05 2999473

Powershell
Код:

$in = "D:\temp\tel.txt"
$out = "D:\temp\out.txt"

gc "$in" |% {
    if ($_ -match "^\d") {
        $_.substring(0,1)+"-"+$_.substring(1,3)+"-"+$_.substring(4,3)+"-"+$_.substring(7,2)+"-"+$_.substring(9,2)
    }
    else {$_}
} > "$out"

Код:

Водитель №1
1-222-333-44-55
Водитель №2
1-222-333-44-66
Водитель №3
1-222-333-44-77
Водитель №4
1-222-333-44-88


Foreigner 22-12-2022 21:23 2999558

Если каждая запись:
Код:

Имя
12223334455
<пустая строка>

Код:

(Get-Content file.txt -ReadCount 3) | Foreach-Object {
    $_[0]
    $_[1] -replace '(.)(...)(...)(..)(..)', '$1-$2-$3-$4-$5'
    $_[2]
} | Set-Content file.txt

Или не заморачиваться, надеюсь, что имени в формате '\d{11}' нет:
Код:

(Get-Content file.txt) -replace '(\d)(\d{3})(\d{3})(\d{2})(\d{2})', '$1-$2-$3-$4-$5' | Set-Content file.txt

DJ Mogarych 22-12-2022 21:37 2999559

Цитата:

Цитата Foreigner
'$1-$2-$3-$4-$5' »

Отлично, я про группы что-то не подумал.


Время: 09:59.

Время: 09:59.
© OSzone.net 2001-