删除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
可能不是必需的。