从单个字符串中提取多个字符串

时间:2013-11-19 14:07:34

标签: ios iphone objective-c nsstring

我正在处理字符串,例如@"78912345"。我想从中提取三个字符串,前四个字符为StringOne,然后第五个和第六个字符为StringTwo,第七个和第八个字符为StringThree。 请指导。感谢

4 个答案:

答案 0 :(得分:6)

您可以使用NSMakeRange和subStringWithRange ....

NSString *string = @"78912345";
NSString *first, *second, *third;

first=[string substringWithRange:NSMakeRange(0, 4)];
second=[string substringWithRange:NSMakeRange(first.length, 2)];
third=[string substringWithRange:NSMakeRange(first.length+second.length, 2)];

因为你的长度是固定的......

你可以这样做:

first=[string substringToIndex:4]; //will give you first four chars
second=[string substringWithRange:NSMakeRange(first.length, 2)]; //
third=[string substringFromIndex:string.length-2]; //last two

编辑: (感谢SPA注意到他想要约会)

由于您要将数字解析为年,月和日期,因此可以将其用作:

NSDate *date = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:date]; 

NSInteger year = [components year]     
NSInteger month = [components month] 
NSInteger day = [components day] 

答案 1 :(得分:2)

使用此方法提取您想要的内容:

NSString *result = [baseString substringWithRange:range];

如果你想要前四个字符,那么你的范围是:

NSMakeRange(0,4)

如果你想要最后2个字符:

NSMakeRange(6,2)

一般来说:

NSMakeRange(firstIndex,lenght)

答案 2 :(得分:2)

如果它始终是您要解析的格式为YYYYMMDD的日期,则使用NSDateFormatter集Simple date formatting question

答案 3 :(得分:1)

      NSString *yearStr  = [valueStr substringWithRange:NSMakeRange(0, 4)];
      NSString *monthStr = [valueStr substringWithRange:NSMakeRange(4, 2)];
      NSString *dayStr   = [valueStr substringWithRange:NSMakeRange(6, 2)];

我希望它对你有用。试试这个...