删除特定的字符从NSString的

问题描述:

例如,如果我有一个像删除特定的字符从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

有很多方法可以做到这一点。这里有一个:

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库。