0

私は748973525のような文字列を持っていますが、ObjectiveCで748-973-525のようにフォーマットする必要があります

4

3 に答える 3

0

を使用して元の文字列を、、およびの-[NSString substringWithRange:]3 つの部分に分割し、を使用してそれらを再び結合します。abc+[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長さが 9 未満の場合、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 に答える