2012-03-12 39 views
10

Tôi muốn xóa tất cả ký tự khỏi NSString của tôi không phải là số (chữ cái, chữ cái, đến, dấu cách hoặc dấu chấm).Xóa tất cả các ký tự không mong muốn bằng cách sử dụng NSCharacterSet

Tôi đang sử dụng NSCharacterSet nhưng không có cách thêm vào nó. Tôi đã thử phiên bản có thể thay đổi để thêm vào dấu cách, dấu phẩy và dấu chấm nhưng không thành công.

// str is my string 
NSCharacterSet *charactersToRemove = 
[[ NSCharacterSet letterCharacterSet ] invertedSet ]; 

NSString *trimmedReplacement = 
[[ str componentsSeparatedByCharactersInSet:charactersToRemove ] 
componentsJoinedByString:@"" ]; 
// this removes spaces, periods, and commas too. How do I add in to the character set to keep them 

Trả lời

32

Tạo bộ ký tự có thể thay đổi và thêm các ký tự bổ sung bạn muốn giữ. Ngoài ra bạn có thể có nghĩa là sử dụng chữ và sốCharacter đặt thay vì letterCharacterSet nếu bạn muốn giữ số trong chuỗi của bạn quá.

NSMutableCharacterSet *charactersToKeep = [NSMutableCharacterSet alphanumericCharacterSet]; 
[charactersToKeep addCharactersInString:@" ,."]; 

NSCharacterSet *charactersToRemove = [charactersToKeep invertedSet]; 

NSString *trimmedReplacement = [[ str componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@"" ]; 
+0

Sử dụng nghịch đảo của bộ ký tự không thay đổi sẽ hiệu quả hơn nhiều so với đảo ngược bộ ký tự có thể thay đổi. –

Các vấn đề liên quan