私のアプリには、次のような文字列があります。
「3022513240」
これを次のように変換したい:
(302)-251-3240
どうすればこれを解決できますか?
私のアプリには、次のような文字列があります。
「3022513240」
これを次のように変換したい:
(302)-251-3240
どうすればこれを解決できますか?
これは、文字列を 10 桁の電話番号にフォーマットする Swift 拡張です。
extension String {
public func toPhoneNumber() -> String {
return stringByReplacingOccurrencesOfString("(\\d{3})(\\d{3})(\\d+)", withString: "($1) $2-$3", options: .RegularExpressionSearch, range: nil)
}
}
例えば:
let number = "1234567890"
let phone = number.toPhoneNumber()
print(phone)
// (123) 456-7890
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)
}
}
私はこのようにします:
例:
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;
お役に立てれば...
このように使用できます
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]);
}
次のような正規表現を使用して(\d{3})(\d{3})(\d{4})
、パターンに一致する入力を次のように置き換えることができます($1)-$2-$3
電話番号の書式設定にはRMPhoneFormatライブラリを使用できます。フォーマットは、同じ電話番号の連絡先アプリに表示されるものを複製する必要があります。
SHSPhoneNumberFormatter
これを行うためにを使用したので、型を変更したりサブクラス化したりする必要はありませんUITextField
設定するには:
let phoneNumberFormatter = SHSPhoneNumberFormatter()
phoneNumberFormatter.setDefaultOutputPattern("(###) ###-####")
を聞いてUITextFieldTextDidChangeNotification
、次を実行します。
let phoneDict = phoneNumberFormatter.valuesForString(phoneTextField.text)
phoneTextField.text = phoneDict["text"] as? String
Lookup RMPhoneFormat、私はそれを使用しました。