【问题标题】:Removing a few special characters from an NSString for a filename PDF attached to an email从 NSString 中删除附加到电子邮件的文件名 PDF 的一些特殊字符
【发布时间】:2014-04-07 11:02:35
【问题描述】:

我正在使用MFMailComposeViewController 处理电子邮件中的附件,并且 pdf 的文件名基于用户输入的事件名称,因此这可能是约翰婚礼或约翰婚礼。

我想从文件名中删除所有特殊字符。

在我的代码中,我已经这样做了:

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 W#dding & %^.pdf 例如,我想删除文件名中的所有特殊字符,除了 Johns Wedding.pdf
  • 最好有一个接受字符的白名单
  • 感谢@gwillie,这确实有道理;我该怎么做呢?
  • 我不知道你想要什么字符,但让我们从最明显的开始:[a-zA-Z0-9{}()\[\]'"+-]。这表示字母(不区分大小写)、数字和以下字符 {}()[]'"+-。你明白了。尝试解释您不想要的每个字符通常比指定有效字符更难

标签: ios regex nsstring mfmailcomposeviewcontroller


【解决方案1】:
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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2017-06-15
    • 1970-01-01
    • 2016-10-18
    • 2017-03-31
    相关资源
    最近更新 更多