代码之家  ›  专栏  ›  技术社区  ›  amitsbajaj

删除电子邮件附件PDF文件名的NSString中的几个特殊字符

  •  0
  • amitsbajaj  · 技术社区  · 11 年前

    我正在使用 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];
    

    这样,如果是约翰的婚礼,它会从我的文件名中删除撇号,但如果我有哈希或其他符号,它不会删除文件名中的撇号。

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

    任何指导都将非常感谢。

    1 回复  |  直到 11 年前
        1
  •  2
  •   Thukaram    11 年前
    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

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