W moim app, mam ciąg jak: "3022513240" &String do formatu numer telefonu iPhone SDK
chcę przekonwertować ten jak: (302) -251-3240
Jak można rozwiązuję to?
W moim app, mam ciąg jak: "3022513240" &String do formatu numer telefonu iPhone SDK
chcę przekonwertować ten jak: (302) -251-3240
Jak można rozwiązuję to?
Można użyć wyrażenia regularnego jak (\d{3})(\d{3})(\d{4})
i wymienić wkład pasujący do wzorca ($1)-$2-$3
Obsługuje tylko ograniczony zestaw numerów telefonów. – rmaddy
Wystarczy na pytanie, myślę, że ... –
@rmaddy OP stwierdził, że '3022513240' podobnie jak liczby muszą zostać przekonwertowane na format' (302) -251-3240'. W tym celu wystarczy podać wyrażenie regularne. Dlaczego tak długo pozostaje pytanie? –
Można użyć RMPhoneFormat bibliotekę dla numerów telefonów formatowanie. Formatowanie powinno powielić to, co zobaczysz w aplikacji Kontakty dla tego samego numeru telefonu.
Edwin, zostanie to zaakceptowane w AppStore? Widzę, że używa jakiegoś prywatnego szkieletu. –
Jeśli tak, to miałem szczęście, gdy ostatnio przesłałem swoją aplikację. Jeśli jesteś tego pewien, to czy mógłbyś utworzyć problem na tym githubie? Na jakim pliku/linii widzisz to? –
Plik readme mówi, że. Skończyło się na tym, że korzystałem z biblioteki, którą wspomniałem w swojej odpowiedzi. –
chciałbym zrobić w ten sposób:
Przykład:
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;
Nadzieja to pomaga ...
Dzięki. Pomógł mi dużo. Zwłaszcza, gdy format US/Canada powinien działać tak samo w każdym miejscu. Rewizja. – NCFUSN
można użyć this sposób
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]);
}
Używam tego, ale po raz pierwszy wpisz numer i po raz drugi tego samego połączenia, więc awarię aplikacji. –
Jest to proste i easy
-(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;
}
Wyszukiwanie RMPhoneFormat, to świetnie, użyłem go.
Używam tego również, ale sprawdzam, że nie pasuje on do formate używanego przez aplikację kontaktową i dla Indii (+91) pokazuje inny format, a także dla USA. Proszę, pomóżcie mi, chcę tylko wdrożyć tę samą funkcjonalność dla samej aplikacji kontaktowej. dzięki . Zamieszczam również pytanie, proszę odpowiedzieć tutaj lub na moje pytanie http://stackoverflow.com/questions/32390073/ios-native-phone-formater – user100
https://github.com/tunabelly/RMPhoneFormat jako dodano obsługę ciągu znaków z 12 + cyfry. czy spróbowałeś tego widelca? Znam problem, który był otwarty dla indyjskiego formatu.Format USA powinien być dobry, użyłem go w Kanadzie/USA i było dobrze, gdy ostatnio go użyłem. ale od tego czasu upłynęło sporo czasu. Edycja: czy próbowałeś https://github.com/iziz/libPhoneNumber-iOS ta przeglądarka wygląda aktywnie Ostatnia aktualizacja była w zeszłym miesiącu. –
Oto rozszerzenie Swift, które formatuje ciągi znaków w numery telefonów na 10 cyfr.
extension String {
public func toPhoneNumber() -> String {
return stringByReplacingOccurrencesOfString("(\\d{3})(\\d{3})(\\d+)", withString: "($1) $2-$3", options: .RegularExpressionSearch, range: nil)
}
}
Na przykład:
let number = "1234567890"
let phone = number.toPhoneNumber()
print(phone)
// (123) 456-7890
Aktualizacja do 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)
}
}
użyłem SHSPhoneNumberFormatter
to zrobić, więc nie trzeba zmienić typ lub podklasy mój UITextField
Aby ustawić up:
let phoneNumberFormatter = SHSPhoneNumberFormatter()
phoneNumberFormatter.setDefaultOutputPattern("(###) ###-####")
Słuchaj za UITextFieldTextDidChangeNotification
i uruchom następujące:
let phoneDict = phoneNumberFormatter.valuesForString(phoneTextField.text)
phoneTextField.text = phoneDict["text"] as? String
Oto kod, aby przekonwertować ciąg na numer telefonu formacie
Swift 3
func PhoneNumberFormate(str : NSMutableString)->String{
str.insert("(", at: 0)
str.insert(")", at: 4)
str.insert("-", at: 8)
return str as String
}
używać
let nsMutableString = NSMutableString(string: "3022513240")
let strModify = self.PhoneNumberFormate(str: nsMutableString)
Reguły dotyczące numerów telefonów różnią się w zależności od kraju. – Antzi
możliwy duplikat [formatowanie numer telefonu] (http: // stackoverflow.com/questions/6052966/formatowanie numeru telefonu) – ColinE
@ColinE: jest to formatowanie "w czasie rzeczywistym" podczas wprowadzania tekstu. OP pyta o formatowanie "gotowego" łańcucha. Mimo że odpowiedzi z połączonego pytania mogą z pewnością pomóc OP. –
Zobacz [RMPhoneFormat] (https://github.com/rmaddy/RMPhoneFormat). – rmaddy