iOS 手机号码格式化,344格式

1 @interface ViewController ()<UITextFieldDelegate>
2 {
3     NSString    *previousTextFieldContent;
4     UITextRange *previousSelection;
5 }
6 @end
1 - (void)viewDidLoad
2 {
3     [super viewDidLoad];
4     // Do any additional setup after loading the view, typically from a nib.
5     self.textField.delegate = self;
6     [self.textField addTarget:self action:@selector(formatPhoneNumber:) forControlEvents:UIControlEventEditingChanged];
7 }
  1 - (void)formatPhoneNumber:(UITextField*)textField
  2 {
  3     NSUInteger targetCursorPosition =
  4     [textField offsetFromPosition:textField.beginningOfDocument
  5                        toPosition:textField.selectedTextRange.start];
  6     NSLog(@"targetCursorPosition:%li", (long)targetCursorPosition);
  7     // nStr表示不带空格的号码
  8     NSString* nStr = [textField.text stringByReplacingOccurrencesOfString:@" " withString:@""];
  9     NSString* preTxt = [previousTextFieldContent stringByReplacingOccurrencesOfString:@" "
 10                                                                            withString:@""];
 11
 12     char editFlag = 0;// 正在执行删除操作时为0,否则为1
 13
 14     if (nStr.length <= preTxt.length) {
 15         editFlag = 0;
 16     }
 17     else {
 18         editFlag = 1;
 19     }
 20
 21     // textField设置text
 22     if (nStr.length > 11)
 23     {
 24         textField.text = previousTextFieldContent;
 25         textField.selectedTextRange = previousSelection;
 26         return;
 27     }
 28
 29     // 空格
 30     NSString* spaceStr = @" ";
 31
 32     NSMutableString* mStrTemp = [NSMutableString new];
 33     int spaceCount = 0;
 34     if (nStr.length < 3 && nStr.length > -1)
 35     {
 36         spaceCount = 0;
 37     }else if (nStr.length < 7 && nStr.length >2)
 38     {
 39         spaceCount = 1;
 40
 41     }else if (nStr.length < 12 && nStr.length > 6)
 42     {
 43         spaceCount = 2;
 44     }
 45
 46     for (int i = 0; i < spaceCount; i++)
 47     {
 48         if (i == 0) {
 49             [mStrTemp appendFormat:@"%@%@", [nStr substringWithRange:NSMakeRange(0, 3)], spaceStr];
 50         }else if (i == 1)
 51         {
 52             [mStrTemp appendFormat:@"%@%@", [nStr substringWithRange:NSMakeRange(3, 4)], spaceStr];
 53         }else if (i == 2)
 54         {
 55             [mStrTemp appendFormat:@"%@%@", [nStr substringWithRange:NSMakeRange(7, 4)], spaceStr];
 56         }
 57     }
 58
 59     if (nStr.length == 11)
 60     {
 61         [mStrTemp appendFormat:@"%@%@", [nStr substringWithRange:NSMakeRange(7, 4)], spaceStr];
 62     }
 63
 64     if (nStr.length < 4)
 65     {
 66         [mStrTemp appendString:[nStr substringWithRange:NSMakeRange(nStr.length-nStr.length % 3,
 67                                                                     nStr.length % 3)]];
 68     }else if(nStr.length > 3)
 69     {
 70         NSString *str = [nStr substringFromIndex:3];
 71         [mStrTemp appendString:[str substringWithRange:NSMakeRange(str.length-str.length % 4,
 72                                                                    str.length % 4)]];
 73         if (nStr.length == 11)
 74         {
 75             [mStrTemp deleteCharactersInRange:NSMakeRange(13, 1)];
 76         }
 77     }
 78     NSLog(@"=======mstrTemp=%@",mStrTemp);
 79
 80     textField.text = mStrTemp;
 81     // textField设置selectedTextRange
 82     NSUInteger curTargetCursorPosition = targetCursorPosition;// 当前光标的偏移位置
 83     if (editFlag == 0)
 84     {
 85         //删除
 86         if (targetCursorPosition == 9 || targetCursorPosition == 4)
 87         {
 88             curTargetCursorPosition = targetCursorPosition - 1;
 89         }
 90     }
 91     else {
 92         //添加
 93         if (nStr.length == 8 || nStr.length == 3)
 94         {
 95             curTargetCursorPosition = targetCursorPosition + 1;
 96         }
 97     }
 98
 99     UITextPosition *targetPosition = [textField positionFromPosition:[textField beginningOfDocument]
100                                                               offset:curTargetCursorPosition];
101     [textField setSelectedTextRange:[textField textRangeFromPosition:targetPosition
102                                                          toPosition :targetPosition]];
103 }
104
105 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
106 {
107     previousTextFieldContent = textField.text;
108     previousSelection = textField.selectedTextRange;
109
110     return YES;
111 }
时间: 2024-10-19 09:54:13

iOS 手机号码格式化,344格式的相关文章

利用NotePad++ 格式化代码(格式标准化) worldsing

在阅读别人的代码时往往会遇到格式很乱,阅读起来很费劲,如果手动改很容易出错,而且很费时间,这时可以借助一些专业的编辑器来格式化代码,NotePad++是一个轻量级的代码编辑器,占用内存少,运行速度快,但是Notepad++本身是不带这个格式化功能的,但他支持插件完成格式化. 安装Notepad++,安装包下载: http://rj.baidu.com/soft/detail/13478.html?ald ? 下载自动格式插件:NppAStyle.dll , 链接:http://pan.baidu

css(文本格式化,文本格式处理)

文本格式化,文本格式处理 文本格式化 1.控制字体 1.指定字体 font-family:"microsoft yahei",arial,"宋体"; 2.字体大小 font-size: px , pt 作为单位  30pt  16pt 常用字体大小:12px - 14px 3.字体加粗 相当于 <b></b> font-weight : normal / bold ; 建议:通过 该属性取代 b 标签 4.字体样式 斜体 font-style

iOS开发之JSON格式数据的生成与解析

本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据?  JSON格式取代了xml给网络传输带来了很大的便利,但是却没有了xml的一目了然,尤其是json数据很长的时候,我们会陷入繁琐复杂的数据节点查找中.这时我们就需要一款在线校验工具 BeJson. 一.JSON是什么? JSON(JavaScript Object Notation) 是一种轻量级的

iOS时间格式化的方法

**iOS时间格式化方法** //时间转换方法 //    long nowT = time(NULL);  获取当前时间 - (NSString *)revertTimeFormat:(long)timesp{     NSDate *data = [NSDate dateWithTimeIntervalSince1970:timesp];//获得data          NSDateFormatter* formatter = [[NSDateFormatter alloc] init];

【JS】【18】当前时间加减一天,和格式化时间格式

正文: 1,当前时间加减一天 function newDate(num) { var date = new Date();//获取当前时间 date.setDate(date.getDate() + num); //num正数为后一天,负数为前一天 return date : } 2,格式化时间格式 //方法 Date.prototype.Format = function (fmt) { var o = { "M+": this.getMonth() + 1, //月份 "

格式化时间格式LocalDateTime转String日期

1.格式化时间格式LocalDateTime转String日期 1 /** 2 * 格式化时间格式LocalDateTime转String日期,如下示范: 3 * [2017,7,22] ==> 2017-07-22 00:00:00 4 * @param value 数组:如,[2017, 7, 22] 5 * @returns {string} 字符串日期:2017-07-22 6 */ 7 HE.localDateTimeToString = function (value) { 8 if

iOS 数字格式化(手机号码 银行卡号 格式化,验证码输入控制)

需求 手机号号码 15288888888  ------->152 8888 8888  银行卡号 8888888888888888888 ----->8888 8888 8888 8888 888 实现 在UITextFiled输入时候就实现号码格式化 在UITextField代理方法 shouldChangeCharactersInRange 实现即可,可以写法分类 就可以全局使用,方便快捷 NSString *text = [textFieldtext]; // 只能输入数字 NSCha

iOS 代码格式化插件Clang-Format

参考:http://blog.csdn.net/zhangao0086/article/details/42872263 最近笔者在接手同事的项目,发现项目经过多人手后,每人个的代码格式风格又有点差异导致代码显示很乱,Google了一番,发现有一个iOS代码格式插件Clang-Format,相当的给力. 配置CLangFormat 虽然CLangFormat本身就内置了一些标准化的代码格式化方案,但是同样可以自定义,我们就采用了自定义的方法. 具体的,在工程目录或者workspace目录下创建一

iOS开发之时间格式的转化

在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如:如何将格式为“12-May-14 05.08.02.000000 PM”的时间转化成“2014/05/12 5:08:02”,下面是具体实现代码: NSString* timeStr = @"12-May-14 05.08.02.000000 PM"; NSDateFormatter *formatter = [[NSDateFormatter alloc]