Search code examples
iosstringxcode4substr

how to get data between some special characters in ios while string manipulation


I am trying to get a substring from a string. This is my code:

NSString *haystack = @"1:ketan jogal:1 2:ios developer:2";

NSString*p1=@"1:";
NSString*s1=@":1";

NSString *prefix = @"2:";
NSString *suffix = @":2"; 

NSRange needleRange = NSMakeRange(prefix.length,
                                  haystack.length - prefix.length - suffix.length);
NSRange needlerange1=NSMakeRange(p1.length,
                                  haystack.length - prefix.length - s1.length);


NSString *needle = [haystack substringWithRange:needleRange];
NSString*needle1=[haystack substringWithRange:needlerange1];

NSLog(@"needle1: %@",needle1);
NSLog(@"needle: %@", needle); 

but I failed every time with getting output like that.

2015-01-31 17:07:44.119 WriteintoTextFile[1685:60b] needle1: ketan jogal:1 2:ios developer

Would you please suggest me how can I get this kind of data?


Solution

  • You can implement that in two ways:

    1

    Using componentsSeparatedByString method of NSString

    NSString *haystack = @"1:ketan jogal:1 2:ios developer:2";
    NSArray *arr       = [haystack componentsSeparatedByString:@":"];
    NSLog(@"%@",arr[1]);
    NSLog(@"%@",arr[3]);
    

    2

    Using NSScanner

    NSScanner *scanner = [[NSScanner alloc] initWithString:haystack];
    NSString *result   = nil;
    
    [scanner scanUpToString:@"1:" intoString:nil];
    [scanner scanString:@"1:" intoString:nil];
    [scanner scanUpToString:@":1" intoString:&result];
    NSLog(@"%@",result);
    
    [scanner scanUpToString:@"2:" intoString:nil];
    [scanner scanString:@"2:" intoString:nil];
    [scanner scanUpToString:@":2" intoString:&result];
    NSLog(@"%@",result);