2013-02-20 5 views
12

Nella mia app, ho una stringa del tipo: "3.022.513,24 mille" &String in formato Numero di telefono in iPhone SDK

voglio convertire questo tipo: (302) -251-3240

Come può risolvo questo?

+4

possibile duplicato del [numero formattazione telefono] (http: // StackOverflow.it/questions/6052966/numero di telefono formattazione) – ColinE

+0

@ColinE: vale per la formattazione "in tempo reale" durante l'immissione del testo. OP sta chiedendo come formattare una stringa 'ready made'. Anche se le risposte dalla domanda collegata potrebbero sicuramente aiutare l'OP. –

+0

Vedere [RMPhoneFormat] (https://github.com/rmaddy/RMPhoneFormat). – rmaddy

risposta

1

È possibile utilizzare una regex come (\d{3})(\d{3})(\d{4}) e sostituire in ingresso che corrisponde al modello con ($1)-$2-$3

+1

Questo supporta solo un numero limitato di numeri di telefono. – rmaddy

+0

È sufficiente per la domanda, credo .. –

+0

@rmaddy OP ha dichiarato che i numeri simili a '3022513240' devono essere convertiti nel formato simile a' (302) -251-3240'. Per questo è sufficiente la regex data. Perché downvote come la domanda rimane così? –

0

Si potrebbe utilizzare RMPhoneFormat libreria per i numeri di telefono di formattazione. La formattazione dovrebbe replicare ciò che vedresti nell'app Contatti per lo stesso numero di telefono.

+0

Edwin, questo sarebbe accettato in AppStore? Vedo che usa un framework privato. –

+0

Se sì, allora sono stato fortunato l'ultima volta che ho inviato la mia app. Se sei sicuro di ciò, potresti creare un problema per questo su github? Su quale file/linea vedi questo? –

+0

Il file readme lo dice. Ho finito per usare la libreria citata da ishtar nella sua risposta. –

12

vorrei fare in questo modo:

Esempio:

NSMutableString *stringts = [NSMutableString stringWithString:self.ts.text]; 
[stringts insertString:@"(" atIndex:0]; 
[stringts insertString:@")" atIndex:4]; 
[stringts insertString:@"-" atIndex:5]; 
[stringts insertString:@"-" atIndex:9]; 
self.ts.text = stringts; 

Spero che questo aiuti ...

+0

Grazie. Mi ha aiutato molto Soprattutto, quando il formato USA/Canada dovrebbe funzionare allo stesso modo in qualsiasi locale. Upvoted. – NCFUSN

2

È possibile utilizzare this modo

NSError *aError = nil; 
NBPhoneNumber *myNumber1 = [phoneUtil parse:@"6766077303" defaultRegion:@"AT" error:&aError]; 
if (aError == nil) 
{ 
    NSLog(@"isValidPhoneNumber ? [%@]", [phoneUtil isValidNumber:myNumber1] ? @"YES":@"NO"); 
    NSLog(@"E164   : %@", [phoneUtil format:myNumber1 numberFormat:NBEPhoneNumberFormatE164]); 
    NSLog(@"INTERNATIONAL : %@", [phoneUtil format:myNumber1 numberFormat:NBEPhoneNumberFormatINTERNATIONAL]); 
    NSLog(@"NATIONAL  : %@", [phoneUtil format:myNumber1 numberFormat:NBEPhoneNumberFormatNATIONAL]); 
    NSLog(@"RFC3966  : %@", [phoneUtil format:myNumber1 numberFormat:NBEPhoneNumberFormatRFC3966]); 
} 
else 
{ 
    NSLog(@"Error : %@", [aError localizedDescription]); 
} 
+0

io uso questo, ma la prima volta immettere numero e la seconda volta la stessa chiamata in modo da arresto anomalo dell'app. –

0

Questa è la semplice e facile

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if (string.length) { 
     if (textField.text.length<=13) { 
      if (textField.text.length==3) { 
       NSString *tempStr=[NSString stringWithFormat:@"(%@)- ",textField.text]; 
       textField.text=tempStr; 
      } else if (textField.text.length==8) { 
       NSString *tempStr=[NSString stringWithFormat:@"%@-",textField.text]; 
       textField.text=tempStr; 
      } 
     } else { 
      return NO; 
     } 
    } 
    return YES; 
} 
0

Ricerca RMPhoneFormat, è fantastico l'ho usato.

+0

Anche io uso questo, ma controllo che non corrisponda al formiato utilizzato dall'app di contatto e per l'india (+91) mostra diversi formati e anche per gli USA. Per favore aiutami, voglio solo implementare la stessa funzionalità per l'app di contatto stessa. Grazie . Inserisco anche una domanda per favore rispondi qui o sulla mia domanda http://stackoverflow.com/questions/32390073/ios-native-phone-formater – user100

+0

https://github.com/tunabelly/RMPhoneFormat come supporto aggiunto per la stringa con 12 + cifre. hai provato questa forcella? So che un problema è stato aperto per il formato India.Il formato USA dovrebbe essere buono, l'ho usato per il Canada/USA e l'ultima volta l'ho usato. ma è passato un po 'da allora. Modifica: hai provato https://github.com/iziz/libPhoneNumber-iOS questo look di lib attivo l'ultimo aggiornamento è stato il mese scorso. –

9

Ecco un'estensione Swift che consente di formattare stringhe in numeri di telefono per numeri a 10 cifre.

extension String {  
    public func toPhoneNumber() -> String { 
     return stringByReplacingOccurrencesOfString("(\\d{3})(\\d{3})(\\d+)", withString: "($1) $2-$3", options: .RegularExpressionSearch, range: nil) 
    } 
} 

Ad esempio:

let number = "1234567890" 
let phone = number.toPhoneNumber() 
print(phone) 
// (123) 456-7890 

Aggiornato a Swift 3.0:

extension String { 
    public func toPhoneNumber() -> String { 
     return self.replacingOccurrences(of: "(\\d{3})(\\d{3})(\\d+)", with: "($1) $2-$3", options: .regularExpression, range: nil) 
    } 
} 
0

ho usato il SHSPhoneNumberFormatter per fare questo in modo da non dover cambiare il tipo o sottoclasse my UITextField

Per impostarlo up:

let phoneNumberFormatter = SHSPhoneNumberFormatter() 
phoneNumberFormatter.setDefaultOutputPattern("(###) ###-####") 

ascoltare i UITextFieldTextDidChangeNotification ed eseguire il seguente:

let phoneDict = phoneNumberFormatter.valuesForString(phoneTextField.text) 
phoneTextField.text = phoneDict["text"] as? String 
0

Ecco un codice per convertire la stringa di telefono formato del numero

Swift 3

func PhoneNumberFormate(str : NSMutableString)->String{ 
     str.insert("(", at: 0) 
     str.insert(")", at: 4) 
     str.insert("-", at: 8) 
     return str as String 
    } 

da usare

let nsMutableString = NSMutableString(string: "3022513240") 
let strModify = self.PhoneNumberFormate(str: nsMutableString) 
+0

Le regole di formato dei numeri di telefono differiscono in base al Paese. – Antzi