Ios NSString操作。只删除日期
如果我在上有一个NSString,看起来像:Ios NSString操作。只删除日期,ios,objective-c,cocoa-touch,nsstring,nscharacterset,Ios,Objective C,Cocoa Touch,Nsstring,Nscharacterset,如果我在上有一个NSString,看起来像: 2-13-2014 Norway vs Canada Per 1 20-00 2 正在对其进行分析,日期将更改 我怎样才能把它变成 Norway vs Canada Per 1 换句话说,删除日期和结尾的额外字符 Iv'e使用: NSArray * dateComponents = [cleanString componentsSeparatedByCharactersInSet:
2-13-2014 Norway vs Canada Per 1 20-00 2
正在对其进行分析,日期将更改
我怎样才能把它变成
Norway vs Canada Per 1
换句话说,删除日期和结尾的额外字符
Iv'e使用:
NSArray * dateComponents = [cleanString
componentsSeparatedByCharactersInSet:
[NSCharacterSet
characterSetWithCharactersInString:@"-"]];
cleanString = [NSString stringWithFormat:@"%@", [dateComponents objectAtIndex:2]];
输出:
2014 Norway vs Canada Per 1 20
感谢您在空格上拆分。然后放下第一个组件和最后两个组件
NSString *input = @"2-13-2014 Norway vs Canada Per 1 20-00 2";
NSArray *words = [input componentsSeparatedByString:@" "];
words = [words subarrayWithRange:NSMakeRange(1, words.count - 3)];
NSString *output = [words componentsJoinedByString:@" "];
如果格式与特定格式一致,则可以使用正则表达式。例如,如果格式始终为: dd-dd-dddd xxxxxxxxxxxxxxxxx dd-dd d
如果您需要帮助破译正则表达式,我可以让您参考。使用NSRegularExpression或NSScanner.btw:what is
timezoneComponents
?@vikingosegundo这是一个打字错误。我更新了问题,我怀疑输出将是2014年挪威对加拿大每120次。它应该是2
,但这会导致您在该行的剩余部分丢失任何额外的空格,这可能是可以接受的,也可能是不可以接受的。也许最好是在第一个空白之后扫描第一个非空白,然后在那里截断。如果你认为这样更好,就把它作为一个答案发布。不,我太懒了。太好了!正是我需要的。谢谢你的帮助!
NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^\\s*\\d{1,2}-\\d{1,2}-\\d{2,4}\\s+(.+)\\s+\\d{1,2}-\\d{1,2}\\s*\\d\\s*$" options:0 error:&error];
NSTextCheckingResult *result = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
if (result) {
NSRange range = [result rangeAtIndex:1]; // find the NSRange for the stuff in the parentheses
NSString *found = [string substringWithRange:range]; // get the string for that range
NSLog(@"found = '%@'", found);
}