【问题标题】:Removing Specific Characters from NSString从 NSString 中删除特定字符
【发布时间】:2015-03-02 05:14:04
【问题描述】:

例如,如果我有一个像

这样的字符串
NSString *myString = @"A B C D E F G";

我想删除空格,并得到一个字符串,如"ABCDEFG"

我可以使用

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

但是,对于我的应用程序,我正在从通讯录中加载电话号码 并且数字通常具有不同的格式布局。

我想知道我是否有一个电话号码存储在一个字符串中,例如 @ 987654325@ 我将如何只删除第一个“1”、“+”、“-”和“(”“)”。

总的来说,我想知道是否可以删除第一个“1”而不删除字符串中的最后一个?

【问题讨论】:

  • 您可能希望使用NSRegularExpression 来执行正则表达式类型替换。 developer.apple.com/library/mac/documentation/Foundation/…
  • 你能提供和使用 NSRegularExpression 的例子吗?
  • 在删除任何字符串之前要非常小心地尽可能评估格式。电话号码通常输入不正确。您似乎想删除国家/地区代码。这很难。如果有国家代码,Apple 的私有框架知道该怎么做。

标签: ios objective-c nsstring


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多