我正在使用MFMailComposeViewController处理电子邮件中的附件,并且pdf的文件名基于事件名称的用户输入,因此可以是John Wedding或John's Wedding。

我想从文件名中删除任何特殊字符。

在我的代码中,我这样做:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"'#%^&{}[]~|\/?.<," options:0 error:NULL];
NSString *string = self.occasion.title;
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];

NSString *fileName = [NSString stringWithFormat:@"(%@).pdf", modifiedString];


这样,如果它是John's Wedding,它将删除文件名中的撇号,但是如果我在其中有哈希或其他任何符号,则不会删除文件名中的那些。

我在网上看到了一些堆栈溢出示例,但是它们看起来都非常复杂。我确切地知道我要从文件名中删除哪些符号。

任何指导将不胜感激。

最佳答案

NSString *textString = @"abcd334%$^%^%80)(*^ujikl";

//this is for remove the specified characters
NSCharacterSet *chs = [NSCharacterSet characterSetWithCharactersInString:@"'#%^&{}[]/~|\?.<,"];
NSString *resultString = [[textString componentsSeparatedByCharactersInSet:chs] componentsJoinedByString:@""];

//this is for get the specified characters
NSCharacterSet *chs1 = [[NSCharacterSet characterSetWithCharactersInString:@"'#%^&{}[]/~|\?.<,"] invertedSet];
NSString *resultString1 = [[textString componentsSeparatedByCharactersInSet:chs1] componentsJoinedByString:@""];
NSLog(@"tex : %@",resultString);
NSLog(@"reverse string : %@",resultString1);


输出:

文字:abcd334 $ 80)(* ujikl

反向字符串:%^%^%^

09-25 21:49