Telefonnummern in kanonisches Format überführen
Posted: 16 Jan 2019, 03:30
Hallo zusammen,
ich möchte bei mir per Tastenkürzel deutsche Telefonnummern in das "Kanonische Format" konvertieren.
Alle mir vorliegenden Telefonnummern haben derzeit das Format "Vorwahl-Anschluss(-Durchwahl)", also z.B. "01234-567890-345".
Folgende Bedingungen sollen dabei berücksichtigt werden:
01234-567890 => +49 (1234) 56 78 90 ' gerade Anzahl von Ziffern beim Anschluss
01234-5667890 => +49 (1234) 566 78 90 ' ungerade Anzahl von Ziffern beim Anschluss
01234-567890-345 => +49 (1234) 56 78 90 - 345 ' gerade Anzahl von Ziffern beim Anschluss mit Durchwahl
01234-5667890-345 => +49 (1234) 566 78 90 - 345 ' ungerade Anzahl von Ziffern beim Anschluss mit Durchwahl
Mein Script sieht derzeit so aus (und funktioniert):
Meine Frage: Gibt es nicht eine kürzere bzw. elegantere Möglichkeit der Konvertierung? Ich habe mir den Formatbefehl, auch mit der Möglichkeit des "Auffüllens" angesehen, aber sehe darin keine Hilfe.
Danke schon mal im Voraus.
HG - Lucky Joe
ich möchte bei mir per Tastenkürzel deutsche Telefonnummern in das "Kanonische Format" konvertieren.
Alle mir vorliegenden Telefonnummern haben derzeit das Format "Vorwahl-Anschluss(-Durchwahl)", also z.B. "01234-567890-345".
Folgende Bedingungen sollen dabei berücksichtigt werden:
01234-567890 => +49 (1234) 56 78 90 ' gerade Anzahl von Ziffern beim Anschluss
01234-5667890 => +49 (1234) 566 78 90 ' ungerade Anzahl von Ziffern beim Anschluss
01234-567890-345 => +49 (1234) 56 78 90 - 345 ' gerade Anzahl von Ziffern beim Anschluss mit Durchwahl
01234-5667890-345 => +49 (1234) 566 78 90 - 345 ' ungerade Anzahl von Ziffern beim Anschluss mit Durchwahl
Mein Script sieht derzeit so aus (und funktioniert):
Code: Select all
#NoEnv
#SingleInstance force
SetBatchLines -1
SetControlDelay, -1
SetWinDelay, -1
SetKeyDelay, 0
SetTitleMatchMode, 2
SetTitleMatchMode, Fast
DetectHiddenWindows, On
#Include %A_ScriptDir%
SetWorkingDir %A_ScriptDir%
^!t:: ; Strg-Alt-t
; Telefonnummern für Outlook international formatieren
; 01234-567890 => +49 (1234) 56 78 90
; 01234-5667890 => +49 (1234) 566 78 90
; 01234-567890-345 => +49 (1234) 56 78 90 - 345
; 01234-5667890-345 => +49 (1234) 566 78 90 - 345
TestTel = 01234-567890-123
aTel := StrSplit(TestTel, "-") ; Telefonnummer bei "-" splitten
Vorwahl := SubStr(aTel[1], 2) ; Teil vor erstem "-"
L := % StrLen(aTel[2]) ; Länge des Anschlusses nach dem ersten "-"
Anschluss := ; Anschluss "leeren"
If !(L & 1) ; wenn Anzahl Ziffern des Anschlusses gerade (!)
{
Loop, % L ; Schleife: Anzahl Ziffern
{
If (A_Index & 1) ; wenn Index ungerade (!)
Anschluss .= A_Space ; dann zusätzliches Leerzeichen
Anschluss .= SubStr(aTel[2], A_Index, 1) ; nächste Ziffer
}
}
Else
{
Loop, % L ; Schleife: Anzahl Ziffern
{
If A_Index < 4 ; Schleifenzähler < 4
Anschluss .= SubStr(aTel[2], A_Index, 1) ; einfach nächste Ziffer vom Anschluss übernehmen
Else ; ab 4. Ziffer
{
If !(A_Index & 1) ; wenn Index gerade (!)
Anschluss .= A_Space ; dann zusätzliches Leerzeichen
Anschluss .= SubStr(aTel[2], A_Index, 1) ; nächste Ziffer
}
}
}
If aTel[3] <> "" ; wenn noch Ziffern hinter zweiten "-"
Anschluss .= " - " . aTel[3] ; mit " - xxx..." definieren
OLNumber := % "+49 (" . Vorwahl . ") " . Anschluss ; vollständige Telefonnummer
MsgBox, % OLNumber
Return
Danke schon mal im Voraus.
HG - Lucky Joe