/ / string до масиву int у цілі - object-c, масиви, рядок

string to int масив у об'єктивних - об'єктивно-c, масиви, рядки

Привіт, я намагаюся перетворити рядок на масив int у об'єктиві C, він працює нормально в xcode, але видає деяку помилку в редакторі http://ideone.com

У мене є введення типу = {1,2,3,4,5}, і я хочу перетворити його на масив int або NSARRAY в і роздрукувати ....

#import <Foundation/Foundation.h>

NSArray* sampleMethod(NSString*val){
NSString *stringWithoutbracketstart = [val stringByReplacingOccurrencesOfString:@"{" withString:@""];
NSString *stringWithoutbracketend = [stringWithoutbracketstart
stringByReplacingOccurrencesOfString:@"}" withString:@""];
NSLog(@"%@",stringWithoutbracketend);
NSArray *items=[[NSArray alloc]init];
items = [stringWithoutbracketend componentsSeparatedByString:@","];
//NSLog(@"%@",items);
return items;
}

int main(int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *value =@"{1,2,3}";
NSArray* ip1= sampleMethod(value);
NSLog(@"%@",ip1);
[pool drain];
return 0;

}

Відповіді:

1 для відповіді № 1

Чому б не зробити вхідний рядок дійсним JSON, а потім його можна довільно розширити, доклавши трохи зусиль для кодування (ніяких зусиль щодо аналізу):

int main(int argc, const char **argv)
{
int retval = 0;
@autoreleasepool {
if (argc == 2) {
NSString *str = @(argv[1]);
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSArray *array = [NSJSONSerialization JSONObjectWithData:data
options:0
error:&error];
if ([array isKindOfClass:[NSArray class]]) {
// Done
} else if (!array) {
NSLog(@"Input data is invalid: %@", [error localizedDescription]);
retval = 2;
} else {
NSLog(@"Input data is invalid");
retval = 3;
}
} else {
NSLog(@"Provide a JSON-list");
retval = 1;
}
}
return retval;
}

Це означає, що вам потрібно буде надати список у форматі JSON:

$ ./myprog "[ 1, 2, 3 ]"

(цитати необхідні)


-2 для відповіді № 2

Я легко знайшов рішення, скориставшись вашими порадами ....

#import <Foundation/Foundation.h>

NSArray*sampleMethod(NSString*val){
NSString *newStr = [val substringFromIndex:1];
NSString *newStr1 = [newStr substringToIndex:[newStr length]-1];
NSArray *yourWords = [newStr1 componentsSeparatedByString:@","];
return yourWords;
}

int main(int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *value =@"{1,2,3}";
NSArray* ip1= sampleMethod(value);
NSLog(@"%@",ip1);
[pool drain];
return 0;
}