我有这个字符串返回:
“星期一至星期五8:00 AM-7:30 PM”
为了得到这个,我需要消除mon-fri的内容:
“8:00 AM-7:30 PM”
然后,我需要将其分为打开时间和关闭时间,以确定它是否打开:
“8:00 AM”和&“7:30 PM”
但是商店很多,开闭时间也不同,所以我不能只从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))];
但是似乎我可能会因为16的硬编码开始而中断,这让我怀疑它是否可以在其他任何地方中断。关于如何实现这一点的任何更好的想法?
最佳答案
如果您知道时间间隔之前的文本始终采用<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:@" - "];
关于ios - 如何在不对位置进行硬编码的情况下从NSString中正确提取子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17840685/