Войти

Показать полную графическую версию : Преобразовать номера телефонов в удобочитаемый вид


yurfed
22-12-2022, 00:01
Есть список телефонов такого формата
ИМЯ
12223334455
И дальше вниз, через пустую строку, такого же плана.
Надо
ИМЯ
1-222-333-44-55

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

Serguei Kouzmine
22-12-2022, 03:58
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
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
Если каждая запись:

Имя
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
'$1-$2-$3-$4-$5' »
Отлично, я про группы что-то не подумал.




© OSzone.net 2001-2012