如何获得中间字符串字符?

时间:2014-04-27 19:10:54

标签: ios objective-c nsstring

我有一个日期字符串,就像这个@"dd/mm/yyyy"一样,我希望将这个字符串分成3个小字符串,包括日,月和年。我使用这段代码成功完成了这一天:

self.dayLabel.text = [string substringToIndex:2];

但是如何获得中间值,比如月份?

3 个答案:

答案 0 :(得分:5)

试试这个:

NSString *string = @"dd/mm/yyyy";
NSArray *components = [string componentsSeparatedByString:@"/"];

NSString *day = components[0];
NSString *month = components[1];
NSString *year = components[2];

答案 1 :(得分:2)

有许多方法可以使用NSString / ObjC解析字符串

但是,如果您的输入数据总是相同,这可能是获取月份的最快方式:

NSString *monthString = [timestampString substringWithRange:NSMakeRange(3,2)];

你应该看看NSScanner

答案 2 :(得分:2)

为什么不将包含您日期的NSString转换为NSDate个实例,然后使用NSDateComponents课程获取如下所示的年/月/日。

NSString *dateString = @"01/01/2012"; // Our initial date as a string

// Set the instance of the Date Formatter up and set the format of the date we want
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];

// Set an instance of the date class up and convert the string value of our dateString to an actual date
NSDate *dateVal = [[NSDate alloc] init];
dateVal = [dateformatter dateFromString:dateString];

// Set the instance of the Date Components class up and specify the components we want and from what date value
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:dateVal];

// Get the year/month/day as ints
int year = [components year];
int month = [components month];
int day = [components day];

// Then using the stringWithFormat: method we can set the int values to the correct label as a string
self.dayLabel.text = [NSString stringWithFormat:@"%d", day];
self.monthLabel.text = [NSString stringWithFormat:@"%d", month];
self.yearLabel.text = [NSString stringWitjFormat:@"%d", year];

对于您可以给出的不同日期格式,例如DD/MM/YYYYMM/DD/YYYYYYYY/MM/DD等,这种方式可能最适合您,所以如果只是解析字符串你可能最终得到随机值,所以最好将它转换为NSDate实例总是具有相同的日期格式,因为它会将所有不同的格式转换为一个,所以你知道你得到的值是一个你想要的。