2

2000-01-01T10:00:00Z その文字列から時間を取得したい文字列があります:10:00

誰でも NSRegularExpression を使用してそれを行う方法を教えてもらえますか

次のコードを試しましたが、機能しません (結果が返されません)

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(\d{2}:\d{2})" options:NSRegularExpressionCaseInsensitive error:NULL];
NSString *newSearchString = [regex firstMatchInString:opening_time options:0 range:NSMakeRange(0, [opening_time length])];

どこopening_timeですか"2000-01-01T10:00:00Z"

4

3 に答える 3

10

私はあなたがあなた\dのsの前にスラッシュを2倍にする必要があると思います:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(\\d{2}:\\d{2})" options:NSRegularExpressionCaseInsensitive error:NULL];
NSTextCheckingResult *newSearchString = [regex firstMatchInString:opening_time options:0 range:NSMakeRange(0, [opening_time length])];
NSString *substr = [opening_time substringWithRange:newSearchString.range];
NSLog(@"%@", substr);

このプリント10:00

于 2012-10-23T03:34:30.933 に答える
2

を使用しNSDateFormatterます。おそらく Rails Web サービスからこの日付を取得しているように見えますか? これを試して:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss'Z'"];

NSDate *date = [dateFormatter dateFromString:opening_time];

NSDateComponents *components = [[NSCalendar currentCalendar] 
                          components:kCFCalendarUnitHour fromDate:date];

NSInteger hour = [components hour]

// Hour should now contain 10 with your sample date

他のコンポーネントを取得する場合は、コンポーネント パラメータを変更して、抽出するコンポーネントのフラグを追加します。このようなもの

NSDateComponents *components = [[NSCalendar currentCalendar] 
                          components:kCFCalendarUnitHour | kCFCalendarUnitMinute 
                            fromDate:date];

NSInteger hour = [components hour];
NSInteger minute = [components minute];
于 2012-10-23T05:25:38.123 に答える
0

この固定形式の文字列の 10:00 の部分だけが本当に必要な場合は、正規表現を使用せずに部分文字列を取得してみませんか。

NSString *timeStr = [opening_time substringWithRange:NSMakeRange(11, 5)];

もちろん、指定された形式のNSDateFormatterを使用して、文字列を解析してNSDateにすることを検討することもできます。日付フォーマッタのロケールがen_US_POSIXに設定されていることを確認してください。これは固定形式であり、ユーザー中心ではないためです。

どのアプローチを取るかは、抽出した時間で何をするかによって異なります。ユーザーに表示したい場合は、 NSDateFormatter を使用して、ユーザーのロケールに合わせて適切にフォーマットできるようにします。

于 2012-10-23T03:49:32.640 に答える