2012-03-07 53 views
2

电话nubmber可以有不同的格式,如0XXXXXXXXXX或+ 91XXXXXXXXXX或XXXXXXXXXX。比较不同格式的电话号码

在任何情况下,电话号码都是相似的。

我如何比较?

+2

你可以用正则表达式测试 – 2012-03-07 06:37:12

回答

1

请为上帝之爱做这件事:处理所有格式的电话号码与处理不同的数据格式一样棘手和毛茸茸。使用一些现有的“成熟”库是一个理智的选择。使用PhoneNumberKit,它是那里一个成熟和流行的图书馆。

但是,如果你想住在边上,你可以尝试这样的事情 -

  1. 字符串逆向&只比较前10个字符。
  2. 正则表达式将是一个更好的解决方案。尽可能多的正则表达式,你有很好的格式&。
  3. 请开源这个库为他人造福:)

一般阅读handling phone numbers

+0

PhoneNumberUtils.compare不适用于objective-c – 2012-03-07 06:44:23

+0

哦,对不起。编辑帖子 – 2012-03-07 06:59:23

+0

但是,如果电话号码不在+ 91-(XXX)XXX XXXX – 2017-03-01 08:24:31

0

您可以使用字符匹配代码使用自定义字符从右至左进行比较。它也可以工作,因为手机上的最后几位数字比前几位数字变化更大,所以您的代码将以不同的比较快速失败,这正是您想要的。保持你有多少匹配的计数,并且如果它通过了某个阈值10,然后调用相等的数字。如果不知道更多具体情况,这将会做得相当好。

+0

嗯..也许这将工作,截至去年10位是重要的,没有国家代码,手机号码将是10位。 – 2012-03-07 06:57:49

0

如前所述通过srikar扭转字符串,并比较10 characters.Create的方法,并调用它的所有三串,然后再比较它们。

NSMutableString *reversedString = [NSMutableString string]; 
NSInteger charIndex = [myString length]; 
NSInteger count; 
count=10; 
while(count >= 0) { 
    count--;  
    charIndex--; 
    NSRange subStrRange = NSMakeRange(charIndex, 1); 
    [reversedString appendString:[myString substringWithRange:subStrRange]]; 
}