2015-03-02 74 views
0

例如,如果我有一個像刪除特定的字符從NSString的

NSString *myString = @"A B C D E F G"; 

一個字符串,我希望把空格去掉,並得到一個字符串出像"ABCDEFG"

我可以用

NSString *stringWithoutSpaces = [myString stringByReplacingOccurrencesOfString:@" " withString:@""]; 

然而,我的應用我加載在電話號碼從地址簿 和數字通常有不同的格式佈局。

我想知道如果我有一個存儲的電話號碼的字符串如 +1-(937)673-3451我將如何去只取出第一個「1」中的「+」「 - 」號和「(」「)」。

總的來說,我想知道是否可以刪除第一個「1」而不刪除字符串中的最後一個?

+0

你可能會想用'NSRegularExpression'來執行regex類型的替換。 https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSRegularExpression_Class/index.html – 2015-03-02 05:16:54

+0

你可能提供和使用NSRegularExpression的例子? – David 2015-03-02 05:30:19

+0

在刪除任何字符串之前,要非常小心地儘可能評估格式。電話號碼往往輸入不好。它看起來像你想刪除國家代碼。這很難。如果有國家代碼,Apple的私人框架就知道該怎麼做。 – uchuugaka 2015-03-02 05:51:55

回答

0

有很多方法可以做到這一點。這裏有一個:

NSString *phoneNumber = @"+1-(937)673-3451"; 
NSCharacterSet *removalCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"+()-"]; 
NSArray *components = [phoneNumber componentsSeparatedByCharactersInSet:removalCharacterSet]; 
NSString *simplifiedPhoneNumber = [components componentsJoinedByString:@""]; 
NSRange firstCharacterRange = NSMakeRange(0, 1); 
if ([[simplifiedPhoneNumber substringWithRange:firstCharacterRange] isEqualToString:@"1"]) { 
    simplifiedPhoneNumber = [simplifiedPhoneNumber stringByReplacingCharactersInRange:firstCharacterRange withString:@""]; 
} 
NSLog(@"Full phone number: %@", phoneNumber); 
NSLog(@"Simplified phone number: %@", simplifiedPhoneNumber); 

但真的是你想使用知道什麼電話號碼應該是什麼樣子,像libPhoneNumber庫。