1
NSString *numberVector = @"( 1, 2, 3, 4)";

これらの数値から NSMutableArray を取得したいと考えています。これどうやってするの?

4

5 に答える 5

3

これはより単純なもので、最初にjson文字列に変換してから、次を使用して配列に変換しますNSJSONSerialization

NSString *numberVector = @"( 1, 2, 3, 4)";
numberVector = [numberVector stringByReplacingOccurrencesOfString:@"(" withString:@"["];
numberVector = [numberVector stringByReplacingOccurrencesOfString:@")" withString:@"]"];
NSError* error;
NSMutableArray *arr = [NSJSONSerialization JSONObjectWithData:[numberVector dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&error];

アップデート

これは両方@"( 1, 2, 3, 4)"で機能し@"(\n 1,\n 2,\n 3,\n 4\n)"、json 文字列には改行とスペースを含めることができるためです。

PSこれは iOS 5.0 以降で動作し、他の iOS では SBJSON または利用可能な他の解析ライブラリを使用できます。

于 2013-03-20T14:33:39.923 に答える
1

このようにしてみてください。数値のみを受け入れるあらゆるタイプのデータに対して正常に機能します。

NSString *numberVector = @"(\n 1,\n 2,\n 3,\n 4\n)";

    NSString *onlyNumbers = [numberVector  stringByReplacingOccurrencesOfString:@"[^0-9,]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, [numberVector  length])];
    NSArray *numbers=[onlyNumbers componentsSeparatedByString:@","];
    NSLog(@"%@",numbers);
于 2013-03-20T14:37:25.237 に答える
1

これがまさにあなたのフォーマットであり、スペース、括弧、またはコンマの量を柔軟にする必要がないことがわかっている場合:

NSCharacterSet *trimSet = [NSCharacterSet characterSetWithCharactersInString:@" ()"];
numberVector = [numberVector stringByTrimmingCharactersInSet:trimSet];
NSArray *numbers = [numberVector componentsSeparatedByString:@", "];
于 2013-03-20T14:21:41.527 に答える
-2

これとともに:

NSString *numberVector = @"( 1, 2, 3, 4)";

編集

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"&([^;])*;" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *modifiedString = [numberVector stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];

NSArray *listItems = [[modifiedString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]] componentsSeparatedByString:@", "]
于 2013-03-20T14:20:30.327 に答える