天天看点

如何去掉NSString中多个特殊字符

NSString中的stringByTrimmingCharactersInSet方法只会去掉string两端的特殊字符,如果想去掉string中的字符,我只想到两种方法。

1、通过调用下面这个方法,循环一次即可去掉string中的特殊字符

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement 

具体实现代码如下:

    NSString *test = @"A/Asdfjkds.sdfasdf.dfasdf,fsdf;fasdf[p][a;fsf.";

    NSArray *charArr = [NSArray arrayWithObjects:@"/",@".",@",",@";",@"[",@"]", nil];

    NSString *temp = @"";

    NSString *text = @"";

    for (int i = 0; i < [charArr count]; i++)

    {

        NSString *charset = [charArr objectAtIndex:i];

        if (i == 0)

        {

            text = [test stringByReplacingOccurrencesOfString:charset withString:@""];

        }

        else

        {

            text = [temp stringByReplacingOccurrencesOfString:charset withString:@""];

        }

        temp = text;

    }

    NSLog(@"%@",temp);

2、第二种方法是通过调用

- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator;

- (NSString *)componentsJoinedByString:(NSString *)separator;

具体实现代码如下:

    NSString *test = @"A/Asdfjkds.sdfasdf.dfasdf,fsdf;fasdf[p][a;fsf.";

    NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:@"/.,;[]"];

    NSArray *strs = [test componentsSeparatedByCharactersInSet:charSet];

    NSString *str = [strs componentsJoinedByString:@""];

    NSLog(@"%@",str);

这两个方法结合的原理就是 componentsSeparatedByCharactersInSet :会通过你定义的字符集去切割整个字符串,然后通过componentsJoinedByString:方法将刚才切割完的字符串用@""拼接起来,以实现去掉整个字符串中的特殊字符。

个人推荐第二种方法,用起来简单快捷。