mar*_*oko 1 substring objective-c nsstring ios
我有这个字符串返回:
"周一至周五上午8:00 - 下午7:30"
为了得到这个,我需要消除mon-fri的东西:
"上午8:00 - 晚上7:30"
然后我需要将其拆分为开放时间和关闭时间,以确定它是否开放:
"上午8:00"&&"晚上7:30"
但是有很多商店,他们有不同的开放和关闭时间,所以我不能从8提取6个字符或类似的东西.
到目前为止,我决定走这条路:
NSRange startRange = [storeTime.text rangeOfString:@"-"];
NSString *openString = [storeTime.text substringWithRange:NSMakeRange(16, startRange.location-17)];
NSString *closeString = [storeTime.text substringWithRange:NSMakeRange(startRange.location+2, storeTime.text.length-(startRange.location+2))];
Run Code Online (Sandbox Code Playgroud)
但似乎我可能会因为16岁的硬编码而破裂,这让我想知道它是否会在其他地方破坏.有关如何实现这一目标的更好的想法?
您可以使用NSRegularExpression从字符串中抓取两个时间字符串:
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"\\d{1,2}:\\d{2} (AM|PM)"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSString *str = @"Monday thru Friday 8:00 AM - 7:30 PM";
NSArray *m = [regex matchesInString:str
options:0
range:NSMakeRange(0, str.length)];
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您知道时间间隔之前的文本始终是格式<someday> thru <someday>,那么您可以找到第一个数字字符(数字)的索引,并从该索引中获取子字符串.
然后,@" - "使用该componentsSeparatedByString:方法拆分时间字符串.
例:
NSString *s = @"monday thru sunday, 0:00 - 23:59";
NSCharacterSet *digits = [NSCharacterSet decimalDigitCharacterSet];
int idx = [s rangeOfChatacterFromSet:digits].location;
NSString *timeStr = [s substringFromIndex:idx];
NSArray *timeStrings = [timeStr componentsSeparatedByString:@" - "];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |