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