Autor Thema: Telefonnummern Parsen  (Gelesen 13809 mal)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Telefonnummern Parsen
« am: 15.01.08 - 17:44:49 »
Hi,

ich soll einen Telefonparser bauen, finde aber kaum Dinge im Netz an denen ich mich orientieren kann.

Also wie sieht es aus mit Regeln und dergleichen. Habt ihr da schon Erfahrungen ? vllt sogar fertigen Code ? Bin über alles glücklich was ihr mir zuwerft
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Telefonnummern Parsen
« Antwort #1 am: 15.01.08 - 17:48:40 »
Wen wir dir Output geben sollen, musst du uns aber auch ein bisschen mehr Input liefern.

Vom @Formel über LotusScript und JavaScript ( RegexP ) ist da so ziemlich alles drin. Mit Sicherheit hat Axel Janssen für Java auch noch was in der Schublade ...
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Telefonnummern Parsen
« Antwort #2 am: 15.01.08 - 17:55:03 »
(Brauchbaren) fertigen Code wird hier kaum jemand veröffentlichen, aber mit Tipps stehen wir sicherlich gerne zur Verfügung. Ich zum Beispiel habe schon viel auf diesem Gebiet gemacht.

Hast Du konkrete Fragen? Wie sieht Dein Ausgangsmaterial aus?
Willst Du aus
Zitat
0172 4711 0815
eine gültige Nummer machen wie
Zitat
004917247110815?
Oder feststellen, dass dies keine gültige Nummer ist (die letzte "5" ist zuviel)?

Hast Du Probleme mit Nummern wie
Zitat
0172-4711-815 (nur privat!)
oder
Zitat
Serverraum: 08662 012100

Einfach wäre auch noch, folgende Nummer zu wandeln:
Zitat
+45 (0) 1234 567
(By the way: Dänemark kennt für inländische (Fern-)Gespräche keine führende Null, aber das nur so am Rande ...


Oder muss Du gar aus so was Nummern herausflöhen?
Zitat
RADIO CHIEMGAU

Programmanbieter GmbH & Co.
Rupertistraße 40-42
83278 Traunstein

Handelsregister Traunstein HRA 5644

persönlich haftende Gesellschafterin:
RADIO CHIEMGAU
Programmanbieter GmbH & Co.
Programmanbieter Verwaltungs GmbH

Geschäftsführer: Andi Nickl

Telefon Verwaltung: +49 861 98 63 6-0
Fax Verwaltung: +49 861 14 110
eMail: info@radio-chiemgau.de
   
Telefon Marketing: + 49 861 98 63 6-14
Fax Marketing: + 49 861 86 02
eMail: marketing@radio-chiemgau.de

Wie Ulrich schon schrieb: Mehr Input, mehr Output.

Bernhard

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Telefonnummern Parsen
« Antwort #3 am: 15.01.08 - 19:05:11 »
Mit Sicherheit hat Axel Janssen für Java auch noch was in der Schublade ...
Ich? Schublade. Regular Expressions?
Hätt ich gerne.
Immer wenn ich dabei war, da ein bischen fixer zu werden, war die Projekt-Aufgabe zu Ende. Seit 5 Jahren.
Das selbe Spiel mit xslt. 
Könnt ich mal machen für das Telefonnummernbeispiel.
Hmm. Sollte noch eine LS2J Umgebung für mein Mock-Framework bauen.

Warte auf Requirements. Bernhard hat schon ein paar gute Beispiele genannt.
Der deklarative Ansatz mit Regular Expressions ist wohl vom Ansatz her überlegen, d.h. man erzielt mit wenig Code gute Ergebnisse.

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Telefonnummern Parsen
« Antwort #4 am: 15.01.08 - 21:13:08 »
... da wäre ich auch hellhörig  ;D

Toni
Grüßle Toni :)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Telefonnummern Parsen
« Antwort #5 am: 16.01.08 - 09:35:44 »
Also , ich arbeite hier mit einem Datenmigrationstool und habe eine CSV-Datei liegen aus der ich mir komplette Adressen herausziehe,Ich bekomme die Nummer einzeln und muss sie nicht aufwendig suchen.

Die Herrausforderung besteht darin, dass ich sie für meine Applikation in 4 Felder unterteilen soll.

1. Ländervorwahl

2. Vorwahl

3. Hauptnummer

4. Durchwahl

So  nun gibt es ja in viel Möglichkeiten wie so eine NUmmer aussehen kann.

ob sie nun mit 0, 00 , +49 anfängt bis dahin ist die Nummer ob die Vorwahl nun  oder 4 stellen hat.


Ich habe bis jetzt ein Tool das erstmal alle Sonderzeichen rausschmeisst und sie durch Leerzeichen ersetzt, dann bilden sich Blöcke die ich untersuche, der erste Block ist ja die VOrwahl oder vllt auchs chon die Länderkennzeichnung, und dann versuche ich die weiter zubauen,

Bis Jetzt kann ich zum Beispiel aus 052741660

+49 5274 / 166 - 0

aber es gibt da noch einige Probleme mit nummern die nur 3 zeichen in der Vorwahl hat
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Telefonnummern Parsen
« Antwort #6 am: 16.01.08 - 09:48:44 »
Haben die Telefon-nummern denn ein bestimmtes Format, aus dem du konvertieren willst? Oder lässt sich das auf bestimmte Formatierungen einschränken?

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Telefonnummern Parsen
« Antwort #7 am: 16.01.08 - 09:53:37 »
Liste der Länder-Vorwahlen:
http://www.kropla.com/dialcode.htm
http://en.wikipedia.org/wiki/List_of_country_calling_codes

Damit sollten sich +43, 0043, etc. herausfiltern lassen.

Und auf
http://www.bundesnetzagentur.de/enid/1c8898cd0fe8ca657dc567bbdf5d5a62,0/Verzeichnisse/Losgroe_enverzeichnis_ONB_1gi.html
gibts ein Verzeichnis aller Ortsvorwahlen Deutschlands, damit solltest Du auch diese eigentlich erkennen können.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Telefonnummern Parsen
« Antwort #8 am: 16.01.08 - 10:31:37 »
Das spannende an dem Parser (find ich) besteht gerade darin, dass er robust auf eine möglichst große Variabilität reagiert, die sich Anwender ausdenken.
Also er sollte.
+49 (0)233 644480
00492333644480
0223464480
0 22 34 6 44 80
02234 64480
alle klaglos verarbeiten können.

Hier gibts auch ein paar Beispiele und Ansatzpunkte für eine solche RegEx, die man vermutlich so in Java kopieren könnte und absolut LS2J fähig wäre, also in LotusScript code wie QuerySave einbindbar ist. 
http://regexlib.com/DisplayPatterns.aspx?categoryId=7&cattabindex=2

Gruß Axel
« Letzte Änderung: 16.01.08 - 10:35:56 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Telefonnummern Parsen
« Antwort #9 am: 16.01.08 - 11:03:12 »
es gibt für die Telefonnummern ein kanonisches Format, welches auch CTI-Anwendungen verwenden. Der Aufbau ist wie folgt:
+[Landeskennzahl] ([Ortsnetzkennzahl]) [Rufnummer]
* zwischen Landeskennzahl, Ortskennzahl und Rufnummer muss jeweils ein Leerzeichen stehen
* die Ortsnetzkennzahl muss ohne führende Null eingetragen werden

siehe auch Wikipedia, wobei die nichts von den Klammern wissen. Bei unserer Anlagensoftware ist in der Doku die Klammer erwähnt.
Gruß
Dirk

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Telefonnummern Parsen
« Antwort #10 am: 16.01.08 - 15:02:19 »
Ich freue mich über die rege Beteiligung,

@Axel genauso sollte es sein, man einfach eine Nummer reingeben und parst sie dann ins richtige Format, zwar ist es in dem Konkreten Beipspiel fast immer passend, aber halt nicht immer. Und kann ich den Code ja auch in anderen Anwendungen zur Anwendung kommen lassen.(Dürfte im Sinne von Bernhardt sein )

Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Telefonnummern Parsen
« Antwort #11 am: 16.01.08 - 17:47:40 »
hier ein erster Versuch :


Code
Sub Click(Source As Button)
	
	Dim ws As New NotesUIWorkspace
	Dim Proc As NotesDocument
	
	Set Proc = ws.CurrentDocument.Document
	
	Dim Phone List As String
	Dim findArray(9) As String
	Dim replaceArray(9) As String
	Dim strArea As String
	Dim strCountry As String
	Dim strLine As String
	Dim strExtension As String
	
	Dim strCheckArea As String
	Dim strCheckLine As String
	Dim strCheckNewArea As String
	Dim strCheckNewLine As String
	Dim strCheckCountry As String
	Dim strCheckNewCountry As String
	
	Dim intLengthComplete As Integer
	Dim intLengthLastPart As Integer
	
	findArray(0) = " "    
	findArray(1) = "/"
	findArray(2) = "\"
	findArray(3) = "-"
	findArray(4) = "("
	findArray(5) = ")"
	findArray(6) = "|"	
	findArray(7) = "~"
	findArray(8) = "#"
	findArray(9) = "'"
	
	replaceArray(0) = " "
	replaceArray(1) = " "
	replaceArray(2) = " "
	replaceArray(3) = " "
	replaceArray(4) = " "
	replaceArray(5) = " "
	replaceArray(6) = " "
	replaceArray(7) = " "
	replaceArray(8) = " "
	replaceArray(9) = " "
	
	
	tmpPhone = Replace(Proc.ParserFieldComplete(0),findArray , replaceArray)
	
	DelimCount = 1
	
	Erase Phone
	
	If tmpPhone <> "" Then
		varPhone = Split(tmpPhone, " ")
		
		If Ubound(varPhone) = 0 Then
			
			strCountry = Left(varPhone(0),1)
			
			If strCountry = "+" Then 
				Proc.ParserFieldCountry= Left(varPhone(0),3)
			Else
				Proc.ParserFieldCountry= Left(varPhone(0),1)
			End If
			
			intLenthComplete = Len(varPhone(0))
			intLengthLastPart = Len(Proc.ParserFieldCountry(0))
			
			varPhone(0) = Right(varPhone(0),(intLenthComplete  - intLengthLastPart))
			strArea = Left(varPhone(0),4)
			
			Proc.ParserFieldArea = strArea
			
			intLengthLastPart = Len(Proc.ParserFieldArea(0))
			intLenthComplete = Len(varPhone(0))
			varPhone(0) = Right(varPhone(0),(intLenthComplete  - intLengthLastPart))
			
			strExtensionCheck = Right(varPhone(0),1)
			
			If strExtensionCheck = "0" Then
				Proc.ParserFieldLine = Left(varPhone(0),Len(varPhone(0))-1)
				Proc.ParserFieldExtension = Right(varPhone(0),1)
			Else
				Proc.ParserFieldLine = varPhone(0)
			End If
			
		Elseif Ubound(varPhone) = 1 Then
			
			Call Proc.ReplaceItemValue("ParserFieldCountry",varPhone(0))
			Call Proc.ReplaceItemValue("ParserFieldArea", Left(varPhone(1),4))
			Call Proc.ReplaceItemValue("ParserFieldLine",Right(varPhone(1),Len(varPhone(1))-4))
			If Right(Proc.ParserFieldLine(0),1) = "0" Then
				Call Proc.ReplaceItemValue("ParserFieldExtension",Right(Proc.ParserFieldLine(0),1))
				Call Proc.ReplaceItemValue("ParserFieldLine",Left(Proc.ParserFieldLine(0),Len(Proc.ParserFieldLine(0))-1))
			End If 
		Elseif Ubound(varPhone) = 2 Then
			
			Call Proc.ReplaceItemValue("ParserFieldCountry",varPhone(0))
			Call Proc.ReplaceItemValue("ParserFieldArea",varPhone(1))
			Call Proc.ReplaceItemValue("ParserFieldLine",varPhone(2))
			If Right(Proc.ParserFieldLine(0),1) = "0" Then
				Call Proc.ReplaceItemValue("ParserFieldExtension",Right(Proc.ParserFieldLine(0),1))
				Call Proc.ReplaceItemValue("ParserFieldLine",Left(Proc.ParserFieldLine(0),Len(Proc.ParserFieldLine(0))-1))
			End If 
			
		Elseif Ubound(varPhone) = 3 Then
			
			Call Proc.ReplaceItemValue("ParserFieldCountry",varPhone(0))
			Call Proc.ReplaceItemValue("ParserFieldArea",varPhone(1))
			Call Proc.ReplaceItemValue("ParserFieldLine",varPhone(2))
			Call Proc.ReplaceItemValue("ParserFieldExtension",varPhone(3))
			
			
		Elseif Ubound(varPhone) = 4 Then
			
			Call Proc.ReplaceItemValue("ParserFieldCountry",varPhone(0))
			Call Proc.ReplaceItemValue("ParserFieldArea",varPhone(1)+ varPhone(2))
			Call Proc.ReplaceItemValue("ParserFieldLine",varPhone(3))
			Call Proc.ReplaceItemValue("ParserFieldExtension",varPhone(4))
			
			
		Elseif Ubound(varPhone) = 5 Then
			
			Call Proc.ReplaceItemValue("ParserFieldCountry",varPhone(0))
			Call Proc.ReplaceItemValue("ParserFieldArea",varPhone(1) + varPhone(2))
			Call Proc.ReplaceItemValue("ParserFieldLine",varPhone(3) + varPhone(4))
			Call Proc.ReplaceItemValue("ParserFieldExtension",varPhone(5))
			
			
		End If 	
	End If
	
	' Validieren der Daten 
	
	'Prüfen der Vorwahl
	
	strCheckArea = Proc.ParserFieldArea(0)
	strCheckLine = Proc.parserFieldLine(0)
	
	If Len(strCheckArea) > 4 Then 
		strCheckNewArea = Left(strCheckArea,4)
		strCheckNewLine = Right(strCheckArea,(Len(strCheckArea)-Len(strCheckNewArea))) +strCheckLine 
		
		If Left(strCheckNewLine,1) = "0" Then
			strCheckNewLine = Right(strCheckNewArea,1) + strCheckNewLine
			strCheckNewArea = Left(strCheckNewArea,Len(strCheckNewArea)-1)
			If Left(strCheckNewLine,1) = "0" Then
				strCheckNewLine = Right(strCheckNewArea,1) + strCheckNewLine
				strCheckNewArea = Left(strCheckNewArea,Len(strCheckNewArea)-1)
				If Left(strCheckNewLine,1) = "0" Then
					strCheckNewLine = Right(strCheckNewArea,1) + strCheckNewLine
					strCheckNewArea = Left(strCheckNewArea,Len(strCheckNewArea)-1)
					If Left(strCheckNewLine,1) = "0" Then
						strCheckNewLine = Right(strCheckNewArea,1) + strCheckNewLine
						strCheckNewArea = Left(strCheckNewArea,Len(strCheckNewArea)-1)
					End If
				End If
			End If
		End If
		
		Proc.ParserFieldArea = strCheckNewArea
		Proc.ParserFieldLine = strCheckNewLine
		
	End If
	
	
	PhoneNumber = Proc.ParserFieldCountry(0) + " " +Proc.ParserFieldArea(0) + " / "+ Proc.ParserFieldLine(0) + " - " +Proc.ParserFieldExtension(0)
	Call Proc.Replaceitemvalue("ParserFieldComplete", PhoneNumber)
End Sub
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline guesswho

  • Senior Mitglied
  • ****
  • Beiträge: 291
Re: Telefonnummern Parsen
« Antwort #12 am: 16.01.08 - 18:48:50 »
sorry Robert, würd dir gern helfen, aber mir ist grad übel :P
« Letzte Änderung: 16.01.08 - 18:50:45 von guesswho »
5 Server 9.x auf W2K3/W2K8
ca. 550 Clients: 9.x auf Win7
Notes Traveler
iQ.Suite
BCC Charon 4
panagenda Marvel Client
BES 10/12 und viele Blackberrys
paar iPad und iPhones
Teamstudio

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Telefonnummern Parsen
« Antwort #13 am: 16.01.08 - 19:27:37 »
Wochenende schaff ichs vielleicht.
Ist ok, wenn das im Sinne der Aufgabenstellung ist.
Aber eigentlich sollte man dafür echt regex nehmen.
Ist schon sehr viel code im Verhältnis zur Aufgabe. 
Parsen kann beliebig komplex werden.

 

« Letzte Änderung: 16.01.08 - 19:39:03 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Telefonnummern Parsen
« Antwort #14 am: 17.01.08 - 08:56:29 »
sorry Robert, würd dir gern helfen, aber mir ist grad übel :P

Warum überl ist der Code so beschissen ?
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline guesswho

  • Senior Mitglied
  • ****
  • Beiträge: 291
Re: Telefonnummern Parsen
« Antwort #15 am: 17.01.08 - 18:39:16 »
Hallo Robert,

nein, das würde ich niemals sagen. Ich sag mal so, es wird mir einfach schlecht, wenn sich Variablen und Arrays ständig wiederholen, wenn (fast) gleiche Kostrukte so oft auftauchen. Das geht definitiv einfacher, lesbarer und besser wartbar. Aber vielleicht bist du noch am Anfang und willst das noch überarbeiten. Dann mach das später.

Allerdings: das ist dann wie neu programmieren....

mal ganz einfach

For i = 1 to 9
   replaceArray(i) = " "
next

wenn dein Array auf 15 anwächst, dann machst du aus 9 eben 15, aber auch das ist noch zu umständlich, was soll man denn mit leeren Inhalten in einem Array ?!

Da solltest oder könntest du wahrlich noch manches optimieren. Ich kann das imer noch nicht von oben nach unten durchlesen. Nicht böse gemeint, aber ganz ehrlich...

Ist nicht böse gemeint, nur ein Hinweis von meiner Wenigkeit.
Jo

5 Server 9.x auf W2K3/W2K8
ca. 550 Clients: 9.x auf Win7
Notes Traveler
iQ.Suite
BCC Charon 4
panagenda Marvel Client
BES 10/12 und viele Blackberrys
paar iPad und iPhones
Teamstudio

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Telefonnummern Parsen
« Antwort #16 am: 18.01.08 - 12:49:03 »
Ja geb dir ja recht, habe auch elegantere Lösungen,


das war ja auch nur der erste Anlauf Quick and Dirty.

Mal sehen wann ich vom Chef Zeit dafür bekomme
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline guesswho

  • Senior Mitglied
  • ****
  • Beiträge: 291
Re: Telefonnummern Parsen
« Antwort #17 am: 18.01.08 - 18:29:52 »
Robert,

dachte ich mir, a-bär denk immer dran: The Problem with quick an dirty is that the Dirty remains much longer than the Quick...  ;D

Edit: Ein Chef ist nicht dafür da, Zeit zu geben. Tut ein Chef auch nie. Da musst du klar sagen, hab ich Zeit, dann mach ich das gern und gut, hab ich die Zeit nicht, dann sabbel ich das hin. Oder Kampfstrategie: Entweder ich krieg Zeit für das Projekt (und den Lerneffekt!!!) oder ich kann das nicht umsetzen! Wenns dann klemmt, Finger raus, Chef fällig. Tschüss Chef, vielleicht kommt ja was Besseres nach...

Jo
« Letzte Änderung: 18.01.08 - 18:36:58 von guesswho »
5 Server 9.x auf W2K3/W2K8
ca. 550 Clients: 9.x auf Win7
Notes Traveler
iQ.Suite
BCC Charon 4
panagenda Marvel Client
BES 10/12 und viele Blackberrys
paar iPad und iPhones
Teamstudio

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Telefonnummern Parsen
« Antwort #18 am: 19.01.08 - 11:48:05 »
Lieber Radlbub,

Telefonnummern parsen, um sie in ein standardisiertes Format zu bringen, ist sehr sinnvoll, weil man damit dann z.B. CTI-Anbindungen von Applikationen realisieren kann. Aber welchen Sinn es machen soll, Telefonnummern in mehrere Felder zu zerschnippseln, kann und will mir nicht einleuchten. Ich habe nämlich seit Jahren eine Anwendung, in der der Programmierer genau diese Zerteilung vorgesehen hat, an die sich die Anwender aber beim Ausfüllen nicht halten.

Jede Einzelinformation der zerteilten Telefonnummern findest du normalerweise auch in anderen Feldern - und dort viel besser (Land, Ort).

Hintergrund geparster Nummern für eine Telefonanbindung ist doch die Frage, wie viele Teile der Nummer du in welchem Umfeld für einen bestimmten Anrufer nicht mitwählen mußt. Und das kannst du am einfachsten ermitteln, wenn die komplette Telefonnummer in einem einzigen Feld steht.

Überleg es dir gut, ob du wirklich 4 Felder füllen willst. Mein Tip: Parsen Ja, zerschnippseln Nein.

Gruß

Norbert
Situs vilate in isse tabernit.

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Telefonnummern Parsen
« Antwort #19 am: 20.01.08 - 07:10:20 »
also zum Thema CTI, es spielt keine Rolle für CTI wo ich mich befinde und wo der angerufene sich befindet. Man übergibt immer die komplette Rufnummer inkl. der Landesvorwahl. Damit kann die Anwendung auch länderübergreifend verwendet werden und sich (sofern richtig konfiguriert) die Telefonanlage darum kümmert, ob es sich um anlageninterne Anrufe oder externe Anrufe handelt und diese richtig routet.

Im Handy gibt man auch nur die Nummern im internationalen Format ein, weil sonst die Telefonnummern im Ausland nicht funktionieren. Wer hier die Nummern falsch eingetragen hat, muss entweder im AUsland jedesmal die Nummer von Hand wählen oder seinen Einträge berichtigen. Genau so verhällt es sich bei einer Anwendung, die falsch bedient wird.

In einigen meiner Anwendungen zerlege ich die Telefonnummer bei festnetzanschlüssen auch in 4 Zahlenfelder (Landeskennung, Ortsvorwahl, Anlageneinwahl, Durchwahl). Dabei handelt es sich um reine Zahlenfelder und außer dem Anlageneinwahlfeld um Pflichtfelder. Landeskennung und Ortsvorwahl kommen dabei aus einer zentralen Datenbank.

Vorteil die Nummer kann für den Anwender in jeder Form formatiert angezeigt werden und es schleichen sich weniger Schreibfehler ein. Außerdem muss die Nummer dann nicht mehr geparst werden.
Gruß
Dirk

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz