在iOS

时间:2015-07-08 13:14:17

标签: ios objective-c

我在 循环中分别得到这样的字符串 - >收件箱 [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;
}

1 个答案:

答案 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];
}

正则表达式将分析你的字符串直到最后一个特殊字符(空格字符除外,因为你想在文件夹的名称中保留空格)。

我认为这可以解决问题。