iOS判断国内固定电话区号

最近在项目中需要对用户填写的固定电话做处理希望要的格式为例如 010-12345678 样式的。
但很不巧的是我在iOS客户端可以严格约束用户输入指定格式的固定电话(使用两个文本框,一个用来接收区号,一个用来接收座机号码),但问题是android客户端没有做处理,所以如果在iOS客户端显示android填写的座机号(格式形如 01012345678)就会出现可读性不高的问题(区号与号码使用连字符分隔开不是可读性更高吗?),至于问什么android那边没有做处理这里就不讨论了,我们就来看看在iOS客户端如何对座机号做格式化(将形如01012345678的号码格式化为010-12345678的样式)


实现思路:
主要是判断号码中区号的位数,因为有3位数区号和4位数区号,号码部分基本上是7/8位
3位数区号总共就那么几位(010,020,021,022,023,024,025,027,028,029),关键就是4位数区号的判断上了,例如 03xx,04xx,05xx等


好了废话不多说了,直接上代码(文件下载请前往 http://www.cocoachina.com/bbs/read.php?tid-333873.html)


/**
 *	@brief	固定电话区号格式化(将形如 01085792889 格式化为 010-85792889)
 *
 *	@return	返回格式化后的号码(形如 010-85792889)
 */
- (NSString*)areaCodeFormat
{
    // 先去掉两边空格
    NSMutableString *value = [NSMutableString stringWithString:[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
    
    // 先匹配是否有连字符/空格,如果有则直接返回
    NSString *regex = @"^0\\d{2,3}[- ]\\d{7,8}$";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    
    if([predicate evaluateWithObject:value]){
        // 替换掉中间的空格
        return [value stringByReplacingOccurrencesOfString:@" " withString:@"-"];
    }
    
    // 格式化号码 三位区号
    regex = [NSString stringWithFormat:@"^(%@)\\d{7,8}$",[self regex_areaCode_threeDigit]];
    predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    if([predicate evaluateWithObject:value]){
        // 插入连字符 "-"
        [value insertString:@"-" atIndex:3];
        return value;
    }
    
    
    // 格式化号码 四位区号
    regex = [NSString stringWithFormat:@"^(%@)\\d{7,8}$",[self regex_areaCode_fourDigit]];
    predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    if([predicate evaluateWithObject:value]){
        // 插入连字符 "-"
        [value insertString:@"-" atIndex:4];
        return value;
    }
    
    return nil;
}

/**
 *	@brief	验证固定电话区号是否正确(e.g. 010正确,030错误)
 *
 *	@return	返回固定电话区号是否正确
 */
- (BOOL)isAreaCode
{
    
    NSString *regex = [NSString stringWithFormat:@"^%@|%@$",[self regex_areaCode_threeDigit],[self regex_areaCode_fourDigit]];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    if([predicate evaluateWithObject:self]){
        return YES;
    }
    
    return NO;
}


/**
 *	@brief	获取三位数区号的正则表达式(三位数区号形如 010)
 */
- (NSString*)regex_areaCode_threeDigit
{
    return @"010|02[0-57-9]";
}
/**
 *	@brief	获取四位数区号的正则表达式(四位数区号形如 0311)
 */
- (NSString*)regex_areaCode_fourDigit
{
    // 03xx
    NSString *fourDigit03 = @"03([157]\\d|35|49|9[1-68])";
    // 04xx
    NSString *fourDigit04 = @"04([17]\\d|2[179]|[3,5][1-9]|4[08]|6[4789]|8[23])";
    // 05xx
    NSString *fourDigit05 = @"05([1357]\\d|2[37]|4[36]|6[1-6]|80|9[1-9])";
    // 06xx
    NSString *fourDigit06 = @"06(3[1-5]|6[0238]|9[12])";
    // 07xx
    NSString *fourDigit07 = @"07(01|[13579]\\d|2[248]|4[3-6]|6[023689])";
    // 08xx
    NSString *fourDigit08 = @"08(1[23678]|2[567]|[37]\\d)|5[1-9]|8[3678]|9[1-8]";
    // 09xx
    NSString *fourDigit09 = @"09(0[123689]|[17][0-79]|[39]\\d|4[13]|5[1-5])";
    
    return [NSString stringWithFormat:@"%@|%@|%@|%@|%@|%@|%@",fourDigit03,fourDigit04,fourDigit05,fourDigit06,fourDigit07,fourDigit08,fourDigit09];
    
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 Uniapp 打包并上架到国内iOS 市场,您需要遵循以下步骤: 1. 申请开发者账号:您需要在苹果开发者网站上注册一个开发者账号,并完成相关的身份验证和付费流程。请确保您已经具备合法的企业或个人身份。 2. 配置证书和描述文件:在创建开发者账号后,您需要生成用于签名和打包的证书和描述文件。您可以使用 Xcode 或者 Apple Developer 网站来完成这一步骤,确保证书和描述文件正确地配置到您的项目中。 3. 准备应用信息:您需要准备应用在 App Store 上的相关信息,包括应用名称、图标、截图、描述等。确保这些信息符合苹果的审核要求和规范。 4. 进行打包和上传:使用 HBuilderX 或者其他支持 Uniapp 的集成开发环境,将您的项目打包成 iOS 应用。生成的 ipa 文件可以通过 Xcode 或者 Application Loader 工具上传到 App Store Connect。 5. 提交审核:一旦上传成功,您需要登录到 App Store Connect,填写应用上架所需的各种信息,并提交应用进行审核。请确保您的应用符合苹果的审核指南和政策。 6. 审核结果:根据苹果审核的时间安排,您将会收到审核结果通知。如果您的应用通过审核,它将会在中国的 App Store 上架;如果被拒绝,您可以根据拒绝原因进行修改并重新提交审核。 请注意,以上步骤仅为基本流程,具体操作和要求可能会因苹果的政策和规则变化而有所不同。建议您在进行打包和上架之前仔细阅读苹果的相关文档和指南,以确保操作的准确性和合规性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值