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:方法将刚才切割完的字符串用@""拼接起来,以实现去掉整个字符串中的特殊字符。
个人推荐第二种方法,用起来简单快捷。