删除NSString中的特殊字符

我把这段文字转换成包含许多特殊字符的文字

" , " . ` 

如何在nsstring中删除这些字符,并只在nsstring中获取字母

ex“新”到新//the special characters are change

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

试试这可能会帮助你

有很多方法来处理这个问题。 举个例子,这是一个使用正则expression式的解决scheme。 这只是一个例子。 我们不知道要删除的特殊字符的全部范围。

 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:@"[,\\.`\"]" options:0 error:NULL]; NSString *sampleString = @"The \"new\" quick brown fox, who jumped over the lazy dog."; NSString *cleanedString = [expression stringByReplacingMatchesInString:sampleString options:0 range:NSMakeRange(0, sampleString.length) withTemplate:@""]; printf("cleaned = %s",[cleanedString UTF8String] ); } return 0; } 

SWIFT接受的答案(但不是SWIFTY方式):

  let notAllowedCharactersSet = NSCharacterSet(charactersInString: "ABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet let filtered = (stringToFilter.componentsSeparatedByCharactersInSet(notAllowedCharactersSet) as NSArray).componentsJoinedByString("") 

我相信有一个更优雅的解决scheme,但是对于任何想在Swift中做这件事的人来说,我所做的就是确保用户的电话号码中没有特殊字符。

 var phone = "+1 (555) 555 - 5555" var removeChars: NSCharacterSet = NSCharacterSet(charactersInString: "1234567890").invertedSet var charArray = phone.componentsSeparatedByCharactersInSet(removeChars) var placeholderString = "" var formattedPhoneNumber: String = placeholderString.join(charArray).stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) 

stringByTrimmingCharactersInSet可能不是必需的。