13

私のアプリには、次のような文字列があります。

「3022513240」

これを次のように変換したい:

(302)-251-3240

どうすればこれを解決できますか?

4

11 に答える 11

13

これは、文字列を 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)
    }
}
于 2015-12-08T22:34:33.977 に答える
11

私はこのようにします:

例:

 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;

お役に立てれば...

于 2013-02-20T07:49:23.317 に答える
2

このように使用できます

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]);
}
于 2013-02-25T06:05:25.433 に答える
1

次のような正規表現を使用して(\d{3})(\d{3})(\d{4})、パターンに一致する入力を次のように置き換えることができます($1)-$2-$3

于 2013-02-20T07:23:02.940 に答える
0

電話番号の書式設定にはRMPhoneFormatライブラリを使用できます。フォーマットは、同じ電話番号の連絡先アプリに表示されるものを複製する必要があります。

于 2013-02-20T07:32:11.683 に答える
0

SHSPhoneNumberFormatterこれを行うためにを使用したので、型を変更したりサブクラス化したりする必要はありませんUITextField

設定するには:

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

を聞いてUITextFieldTextDidChangeNotification、次を実行します。

let phoneDict = phoneNumberFormatter.valuesForString(phoneTextField.text) 
phoneTextField.text = phoneDict["text"] as? String
于 2016-03-23T22:05:37.197 に答える
0

Lookup RMPhoneFormat、私はそれを使用しました。

于 2015-09-04T19:18:43.997 に答える