NSNumberFormatter zum Formatieren von US-Telefonnummern

8

Ich versuche, eine vom Benutzer eingegebene Zeichenfolge in eine sexy Zeichenfolge wie Phone.app auf dem iPhone umzuwandeln. Hier ist der Code, den ich benutze, der nicht funktioniert (kein spezielles Format kommt heraus) und nach einer bestimmten Anzahl von Ziffern beginnt er einfach "0" am Ende der Zeichenkette hinzuzufügen.

%Vor%     
samuraisam 20.03.2009, 05:49
quelle

4 Antworten

11

Ich denke, dein Problem ist, dass NSNumberFormatter keine Klammern, Leerzeichen oder Bindestriche unterstützt. Ich habe versucht, die gleiche Methode wie Sie zu implementieren, und es ist im Stillen gescheitert und nur unformatierten Text ausgegeben.

Das generelle Problem hierbei ist, dass das iPhone SDK keine Methode zum Formatieren von Telefonnummern in einer länderspezifischen Weise bietet.

Ich habe bei Apple folgende Fehler gemeldet (zwei davon waren Duplikate bekannter Probleme, daher habe ich Apples ursprünglichen Fehler # für diese hinzugefügt):

%Vor%

In einer idealen Welt würde Apple ein NSPhoneNumberFormatter zur Verfügung stellen, und Sie würden setFormatter auf Ihrem UIControl nennen, so dass es text auf schöne Weise anzeigt. Leider existiert das nicht auf dem iPhone.

    
Dan J 04.06.2009, 20:39
quelle
9

Die UIPhoneFormats.plist enthält vordefinierte Telefonformate für jedes Gebietsschema. Wenn Sie nur an US-Telefonnummern interessiert sind, müssen Sie diese Formate berücksichtigen:

  

+1 (###) ### - ####
  1 (###) ### - ####
  011 $
    ### - ####
  (###) ### - ####

Ich musste etwas Ähnliches tun, und ich teilte die Ergebnisse, die ich hier bekommen habe: Ссылка

    
Ahmed Abdelkader 22.01.2010 15:34
quelle
2

Nun, eine Telefonnummer sollte 10 Zeichen lang sein (11 mit der führenden 1), also sollten Sie anfangen, dies zu ändern:

%Vor%

Und wenn man von der führenden 1 spricht, muss man das auch überprüfen.

    
Adrian Archer 20.03.2009 05:54
quelle
2

Apple sagt, Sie können Ihren benutzerdefinierten Formatierer implementieren, wenn die Funktionalität der vorhandenen Formatierer nicht ausreicht:

  

NSFormatter ist für Unterklassen gedacht. Ein benutzerdefinierter Formatierer kann die Eingabe einschränken und die Anzeige von Daten auf neuartige Weise verbessern. Beispielsweise könnten Sie einen benutzerdefinierten Formatierer haben, der sicherstellt, dass von einem Benutzer eingegebene Seriennummern vordefinierten Formaten entsprechen. Bevor Sie sich entscheiden, einen benutzerdefinierten Formatierer zu erstellen, stellen Sie sicher, dass Sie die öffentlichen Unterklassen NSDateFormatter und NSNumberFormatter nicht konfigurieren können, um Ihre Anforderungen zu erfüllen.

     

Anweisungen zum Erstellen eines benutzerdefinierten Formatierungsprogramms finden Sie unter Erstellen eines benutzerdefinierten Formatierungsprogramms.

Siehe den Abschnitt im Leitfaden zur Datenformatierung

    
Stas 12.09.2012 09:48
quelle