特定号码格式化程序到电话号码

Posted

技术标签:

【中文标题】特定号码格式化程序到电话号码【英文标题】:specific number formatter to a phone number 【发布时间】:2011-09-08 10:54:48 【问题描述】:

我想按以下格式显示数字

格式为“123-456-7890”

我正在使用

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterNoStyle];
[formatter setPositiveFormat:@"###-###-####"];
[formatter setLenient:YES];

amountField.text =[formatter stringFromNumber:[NSNumber numberWithDouble:[rxAlertResponse.rxPhoneNo doubleValue]]];
NSLog(@"%@",amountField.text);

我正在使用上面的代码来做到这一点,但代码没有反映.....并且输出显示为 1234567890 只有任何人才能帮助如何做到这一点。

【问题讨论】:

【参考方案1】:

使用此格式化程序:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    //[formatter setNumberStyle:NSNumberFormatterNoStyle];
    //[formatter setPositiveFormat:@"###-###-####"]; 
    [formatter setGroupingSeparator:@"-"];
    [formatter setGroupingSize:4];
    [formatter setUsesGroupingSeparator:YES];
       [formatter setSecondaryGroupingSize:3];
    //[formatter setLenient:YES];
    NSString *num = @"1234567890";
    NSString *str = [formatter stringFromNumber:[NSNumber numberWithInt:[num intValue]]];
    NSLog(@"%@",str); 

【讨论】:

产生“123-456-789”而不是请求的“123-456-7890” [格式化程序 setGroupingSize:4]; [格式化程序 setSecondaryGroupingSize:3];我认为它会正常工作【参考方案2】:

在那段代码中 检查

tempStr = [NSString stringWithFormat:@"1(%@)%@-%@", areaCode, phone1, phone2];

作为

tempStr = [NSString stringWithFormat:@"%@-%@-%@", areaCode, phone1, phone2]

在PhoneNumberFormatter.m中

【讨论】:

【参考方案3】:

setPositiveFormat 将“-”分隔符视为减号。

注意:见Number Format Patterns

一种解决方法是指定“,”分隔符并替换它们:

NSNumber *phoneNumber = [NSNumber numberWithDouble:[rxAlertResponse.rxPhoneNo doubleValue]];
NSString *text =[formatter stringFromNumber:phoneNumber];
amountField.text = [text stringByReplacingOccurrencesOfString:@"," withString:@"-"];

【讨论】:

【参考方案4】:

斯威夫特:

let numberFormatter = NumberFormatter()
numberFormatter.groupingSeparator = "-"
numberFormatter.groupingSize = 4
numberFormatter.usesGroupingSeparator = true
numberFormatter.secondaryGroupingSize = 3
let number = "1234567890"
let formattedNumber = numberFormatter.string(from: NSNumber(value: Int(number)!))
print(formattedNumber as Any)

【讨论】:

以上是关于特定号码格式化程序到电话号码的主要内容,如果未能解决你的问题,请参考以下文章

如何在电话号码格式的范围内生成随机数 Postman [关闭]

Android - 电话号码格式化和删除国家/地区代码

Android:来电时的电话号码格式,确定国家代码?

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

标准化的国际电话号码字段格式为字符串

ios中的电话号码格式掩码