从NSString中删除一些特殊字符,以获取附加到电子邮件的文件名PDF

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从NSString中删除一些特殊字符,以获取附加到电子邮件的文件名PDF相关的知识,希望对你有一定的参考价值。

我正在使用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的婚礼,它会从我的文件名中删除撇号,但是如果我有哈希或其中任何其他符号,它就不会删除文件名中的那些符号。

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

任何指导都会非常感激。

答案
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

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

以上是关于从NSString中删除一些特殊字符,以获取附加到电子邮件的文件名PDF的主要内容,如果未能解决你的问题,请参考以下文章

如何删除从perl读取sql文件时附加的特殊字符

如何以编程方式从 NSString 中删除特定字符?

如何在 NSString/String 数组中获取最小值和最大值?

如何从数组字符串中删除一些特殊字符

如何使用 AngularJs 从输入或文本区域中删除特殊字符?

如何从字符串中获取子字符串并将另一个字符串附加到字符串并将其转换为数组