我在 循环中分别得到这样的字符串 - >收件箱 , [Gmail] /所有邮件 或 [Gmail Acc] /已删除邮件
我想在这里找到只有子串的 - >收件箱,所有邮件或已删除邮件,然后添加到一个数组(folderarray)。
通过查看上面的单词,有一些字符串,如 - > [Gmail] /,[Gmail Acc] / 等不必要地出现,我想删除它们,如果有任何这样的字符串出现并获得单词,只有像 - >收件箱,所有邮件,垃圾箱
我尝试了下面的代码,但它没有按照预期通过此链接sample string separator
给我这个词有人可以帮我解决这个问题吗?
for (MCOIMAPFolder *fdr in folders) {
NSString *foldertitle = fdr.path; // it gives Inbox, [Gmail]/All Mail or [Gmail Acc]/Trash
for (int i=0; i<[folderList.defaultFolderArray count];i++) {
if ([foldertitle rangeOfString:[folderList.defaultFolderArray objectAtIndex:i] options:NSCaseInsensitiveSearch].location != NSNotFound) {
NSLog(@"Yes it does contain that word");
NSRange range = [foldertitle rangeOfString:[folderList.defaultFolderArray objectAtIndex:i] options:NSCaseInsensitiveSearch];
if (range.length>1) {
foldertitle = [[foldertitle substringFromIndex:NSMaxRange(range)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}
break;
}
}
[folderarray addObject:foldertitle];
}
- (NSArray *) defaultFolderArray
{
_defaultFolderArray = [NSArray arrayWithObjects:@"inbox", @"draft", @"sent", @"spam", @"trash", nil];
return _defaultFolderArray;
}
答案 0 :(得分:2)
已编辑的常规表达
NSString *string = @"[Anything]/BlaBla";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@".*[^ A-z0-9\(\)]+" options:0 error:nil];
NSTextCheckingResult *match = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
if(match.range.length > 0) {
NSString *newString = [string substringFromIndex:match.range.length];
}
正则表达式将分析你的字符串直到最后一个特殊字符(空格字符除外,因为你想在文件夹的名称中保留空格)。
我认为这可以解决问题。