【问题标题】:String format compare in objective c目标c中的字符串格式比较
【发布时间】:2011-09-29 13:43:54
【问题描述】:

大家好,我有一个NSString,格式为+1-123-123-1234(电话号码美国基本样式),我的问题是我们如何比较我的字符串格式为+1-123-123-1234

在字符串比较格式化的基础上,我必须完成另一项任务..所以任何人对此有任何想法请帮助我。

【问题讨论】:

  • 我想你应该使用 NSRegularExpression

标签: iphone objective-c nsstring string-formatting string-comparison


【解决方案1】:

您可以使用NSRegularExpression 来测试您的字符串是否为某种格式。

NSRegularExpression *regex = [NSRegularExpression
    regularExpressionWithPattern:@"^\\+\\d-\\d{3}-\\d{3}-\\d{4}$"
                         options:NSRegularExpressionCaseInsensitive
                           error:nil];

int num = [regex numberOfMatchesInString:phoneNumberHere
                                 options:0
                                   range:NSMakeRange(0, [phoneNUmberHere length])];
if (num == 1) {
    // match!
}

【讨论】:

  • 我认为如果 OP 仅测试美国电话号码,则第一个 \\d 可以简单地为 1,尽管俄罗斯唯一的其他一位国家代码是 +7。
  • 这仅适用于 iOS 4.0 及更高版本。如果您发现自己为 4.0 以下的内容编写代码,请在 NSString 的搜索方法之一中使用 NSRegularExpressionSearch
  • 当我传递我的电话号码时,我收到警告消息:'NSRegularExpression' 可能无法响应'-numberOfMatchesInString:'
  • 我无法与此警告进行比较 .. 我的应用程序崩溃 .!! :(
  • 改用这个方法 - (NSUInteger)numberOfMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range。有关更多信息,请参阅此处的课程参考developer.apple.com/library/mac/#documentation/Foundation/…
猜你喜欢
  • 2018-01-16
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
相关资源
最近更新 更多