0

我有一个像 748973525 这样的字符串,现在我需要像 Objective C 中的 748-973-525 一样格式化它

4

3 回答 3

0

将原始字符串 using 拆分-[NSString substringWithRange:]为三部分,例如a,bc,然后使用+[NSString stringWithFormat:].

例如:

NSString *s = @"748973525";
NSString 
  *a = [s substringWithRange: NSMakeRange(0, 3)],
  *b = [s substringWithRange: NSMakeRange(3, 3)],
  *c = [s substringWithRange: NSMakeRange(6, 3)];
NSString *result = [NSString stringWithFormat: @"%@-%@-%@", a, b, c];

当然,这只适用于包含 9 个或更多字符的字符串;如果s长度小于九,substringWithRange将引发异常。

于 2012-11-09T09:24:41.327 回答
0

解决这个问题的几种方法。我们没有输入字符串的规范;但您可以采用以下方法:

#import <Foundation/Foundation.h>

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

    NSString *original = @"748973525";
    NSRegularExpression *exp = [NSRegularExpression regularExpressionWithPattern:@"(\\d{3})(\\d{3})(\\d{3})" 
            options:0 error:nil];
    NSString *new = [exp stringByReplacingMatchesInString:original 
            options:0 range:NSMakeRange(0,original.length) 
            withTemplate:@"$1-$2-$3"];
    printf("%s",[new UTF8String]);

    [p release];
}

打印748-973-525到控制台。

于 2012-11-09T09:40:49.037 回答
0

使用自定义“数字格式化程序”并将“分组分隔符”设置为“-”

于 2012-11-09T09:44:21.227 回答