iOS上的字符串到电话号码格式

use*_*099 13 objective-c phone-number nsstring ios

在我的应用程序中,我有一个字符串,如:

"3022513240"

我想将其转换为:

(302)-251-3240

我怎么解决这个问题?

lak*_*esh 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;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...


And*_*ber 11

这是一个Swift扩展,它将字符串格式化为10位数字的电话号码.

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

例如:

let number = "1234567890"
let phone = number.toPhoneNumber()
print(phone)
// (123) 456-7890
Run Code Online (Sandbox Code Playgroud)

更新到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)
    }
}
Run Code Online (Sandbox Code Playgroud)


Nav*_*d S 1

您可以使用正则表达式(\d{3})(\d{3})(\d{4}),并将与模式匹配的输入替换为($1)-$2-$3

  • 这只支持有限的电话号码。 (2认同)
  • 我只是做一个观察。OP 可能不明白他们的应用程序可能被世界各地的人们使用,并且每个国家的电话号码格式都不同。但是,是的,如果用户确实只需要格式化美国和加拿大的电话号码,那么您的正则表达式就可以工作。 (2认同)