2012-11-21 102 views
2

林用从字符串去除特殊字符的问题。我用下面的code.But力work.Please建议我更好的逻辑问题与替换特殊字符

- (NSString *)trimmedReciString:(NSString *)stringName 
{ 
    NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"-/:;()$&@\".,?!\'[]{}#%^*+=_|~<>€£¥•."]; 
    for (int i = 0; i < [stringName length]; i++) { 
     unichar c = [stringName characterAtIndex:i]; 
     if ([myCharSet characterIsMember:c]) { 
      NSLog(@"%@",[NSString stringWithFormat:@"%c",[stringName characterAtIndex:i]]); 
      stringName = [stringName stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%c",[stringName characterAtIndex:i]] withString:@""]; 

     } 
    } 
    return stringName; 
} 

回答

8
NSString *s = @"$$$hgh$g%k&fg$$tw/-tg"; 
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"-/:;()$&@\".,?!\'[]{}#%^*+=_|~<>€£¥•."]; 
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""]; 
NSLog(@"String is: %@", s); 
+0

好的一个我测试此代码输出字符串为:hghgkfgtwtg +1简单的解决方案 –

+0

优雅而简单,感谢namrata –

0

尝试从年底开始的字符串并向后工作,而不是从前往后,因为当前一个字符被删除时,您可能会意外(无意)跳过字符。

3

尝试......

NSString *unfilteredString = @"[email protected]#$%^&*()_+|abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; 
NSCharacterSet *notAllowedChars = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"] invertedSet]; 
NSString *resultString = [[unfilteredString componentsSeparatedByCharactersInSet:notAllowedChars] componentsJoinedByString:@""]; 
NSLog (@"Result: %@", resultString);