2013-03-20 2 views
1
NSString *numberVector = @"(1, 2, 3, 4)"; 

Я хочу получить NSMutableArray из этих чисел. Как я могу это сделать?Как разбирать номера из NSString?

+0

использование regex для этого. –

+0

не могли бы вы предоставить код для меня? – ttotto

+0

у вас есть ответ от DrummerB –

ответ

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]; 

Update

Это будет работать как для @"(1, 2, 3, 4)" и @"(\n 1,\n 2,\n 3,\n 4\n)" в JSon строки может иметь новую строку и пробелы.

P.S Это будет работать для iOS 5.0 или выше для других iOS, вы можете использовать SBJSON или другую доступную библиотеку синтаксического анализа.

+0

NSJSONSerialization ios> 5.0 (доступно в iOS 5.0 и более поздних версиях) –

+1

@EvgeniyS для <5.0 вы можете использовать любую библиотеку json –

+0

Да, ofcourse6, но я думаю, что ее важная информация ...) –

-2

С этим:

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

EDIT

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:@", "] 
+1

** NO ** (0) –

+0

Проверьте мой ответ еще раз – CainaSouza

1

Если вы знаете, что это именно ваш формат и не должны быть гибкими в количестве пробелов, скобок и запятых:

NSCharacterSet *trimSet = [NSCharacterSet characterSetWithCharactersInString:@"()"]; 
numberVector = [numberVector stringByTrimmingCharactersInSet:trimSet]; 
NSArray *numbers = [numberVector componentsSeparatedByString:@", "]; 
+0

Как удалить "\ n"? – ttotto

0

Смотрите ниже код, он должен работать:

NSCharacterSet *cSet = [NSCharacterSet characterSetWithCharactersInString:@"()"]; 
    numberVector = [numberVector stringByTrimmingCharactersInSet:cSet]; 
    //specify delimiter below 
    NSArray *numbers = [numberVector componentsSeparatedByString:@", "]; 
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); 
Смежные вопросы