English 中文(简体)
从电话号码上删除格式,只接收数字,有什么好办法?
原标题:What is a good way to remove the formatting from a phone number to only get the digits?
  • 时间:2010-09-27 21:40:31
  •  标签:
  • iphone
  • cocoa

是否有更好或更短的办法来把目标C的所有非数字性质 strip在桌面上?

NSString * formattedNumber = @"(123) 555-1234";
NSCharacterSet * nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];

NSString * digits;
NSArray * parts = [formattedNumber componentsSeparatedByCharactersInSet:nonDigits];
if ( [parts count] > 1 ) {
    digits = [parts componentsJoinedByString:@""];
} else {
    digits = [parts objectAtIndex:0];
}
return digits;
问题回答

您可使用一种可取代<条码>[D]的备份录。

电话号码可以包含星号和编号标志(*#,并可从+开始。 ITU-T E-123 Recommandation建议使用+的文号,以表明该编号为国际编号,并提醒各国必须使用具体国际的分列顺序代替该编号。

不能将空间、海口和括号分开,因此它们在电话号码上没有任何意义。 为了排除所有无用符号,除<代码>*<>>/代码>和<代码>#外,还应删除电话号码开头未发现的<代码+。

据我所知,没有标准或建议的方法代表人工推广(有些使用<条码>x,有些使用<条码>ext,有些使用<条码>E。 虽然我没有在很长的时间里经历过人工延期。

NSUInteger inLength, outLength, i;
NSString *formatted = @"(123) 555-5555";

inLength = [formatted length];
unichar result[inLength];

for (i = 0, outLength = 0; i < inLength; i++)
{
    unichar thisChar = [formatted characterAtIndex:i];

    if (iswdigit(thisChar) || thisChar ==  *  || thisChar ==  # )
        result[outLength++] = thisChar;   // diallable number or symbol
    else if (i == 0 && thisChar ==  + )
        result[outLength++] = thisChar;   // international prefix
}

NSString *stripped = [NSString stringWithCharacters:result length:outLength];

你可以这样做:

NSString *digits = [[formattedNumber componentsSeparatedByCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]] componentsJoinedByString:@""];

注 以上第3条评论,你可以选择性地使用不同的NSCharacter。 包括+和其他在电话号码上有效的非数字。





相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。

热门标签