繁体   English   中英

NSString中的单独数字显示电话号码

[英]Separate digits in an NSString to display a phone number

我有一个NSString ,它包含这样的东西:

4434332124

我怎么能把它变成这样的东西?

443-433-2124

这只能在两行中完成,只需使用NSString的stringWithFormat方法,并将电话号码分成单独的子串,并将整个事物粘贴在您的格式字符串中。 像这样的东西:

NSString *sPhone = @"4434332124";

NSString *formatted = [NSString stringWithFormat: @"%@-%@-%@", [sPhone substringWithRange:NSMakeRange(A,B)],[sPhone substringWithRange:NSMakeRange(B,C)],
                           [sPhone substringWithRange:NSMakeRange(C,D)]];

编辑:工作代码

NSString *formatted = [NSString stringWithFormat: @"%@-%@-%@", [sPhone substringWithRange:NSMakeRange(0,3)],[sPhone substringWithRange:NSMakeRange(3,3)],
                           [sPhone substringWithRange:NSMakeRange(6,4)]];

如果你想简单快速地替换你确定的10位数字,那么试试这个正则表达式的例子( iOS> = 3.2 )。

NSString *tenDigitNumber = @"5554449999";
tenDigitNumber = [tenDigitNumber stringByReplacingOccurrencesOfString:@"(\\d{3})(\\d{3})(\\d{4})"
                                                           withString:@"$1-$2-$3"
                                                              options:NSRegularExpressionSearch
                                                                range:NSMakeRange(0, [tenDigitNumber length])];
NSLog(@"%@", tenDigitNumber);

不像尝试使用NSFormatter做一些漂亮的东西(虽然除非你将它子类化,否则我没有看到明显的方法让它做类似电话号码的事情)但你可以这样做:

NSString* newString = [NSString stringWithFormat:@"%c%c%c-%c%c%c-%c%c%c%c" [phoneNumber characterAtIndex:0],
        [phoneNumber characterAtIndex:1],
        [phoneNumber characterAtIndex:2],
        [phoneNumber characterAtIndex:3],
        [phoneNumber characterAtIndex:4],
        [phoneNumber characterAtIndex:5],
        [phoneNumber characterAtIndex:6],
        [phoneNumber characterAtIndex:7],
        [phoneNumber characterAtIndex:8],
        [phoneNumber characterAtIndex:9]];
#import <Foundation/Foundation.h>
static NSString * const theInString = @"4434332124";

int main (int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    const char      * theUniChar = theInString.UTF8String;
    NSMurableString * theResult = nil;


    for( int i = 0, c = (int)strlen(theUniChar); i < c; i+=2 )
    {
        char     thePart[4];
        sscanf( theUniChar + i, "%3s", &thePart );
        if( theResult == nil )
            theResult = [NSMutableString string];
        else
            [theResult appendFormate:@"-%3s",thePart];
    }

    printf( "%@\n", theResult );

    [pool drain];
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM