需求:用户输入,一串手机号后,自动加空格。

1、:12345678912         显示:123 4567 8912

2、:+8612345678912   显示:+86 1234 5678 912

代码:

   editText.addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence charSequence, int start, int before, int count) {if (charSequence == null || charSequence.length() == 0) {return;}StringBuilder stringBuilder = new StringBuilder();//首先排除全是空字符的输入if (charSequence.length() > 0 && charSequence.toString().replace(" ", "").isEmpty()) {editText.setText("");}for (int i = 0; i < charSequence.length(); i++) {if (i != 3 && i != 8 && i != 13 && charSequence.charAt(i) == ' ') {continue;} else {stringBuilder.append(charSequence.charAt(i));if ((stringBuilder.length() == 4 || stringBuilder.length() == 9 || stringBuilder.length() == 14)&& stringBuilder.charAt(stringBuilder.length() - 1) != ' ') {stringBuilder.insert(stringBuilder.length() - 1, ' ');}}}//排除用户输入几个数字后 继续输入空格if (charSequence.toString().length() != trim(charSequence).toString().length()) {editText.setText(trim(charSequence).toString());editText.setSelection(trim(charSequence).toString().length());}//删除插入光标位置if (!stringBuilder.toString().equals(charSequence.toString())) {int index = start + 1;if (start >= stringBuilder.length())return;if (stringBuilder.charAt(start) == ' ') {if (before == 0) {index++;} else {index--;}} else {if (before == 1) {index--;}}editText.setText(stringBuilder.toString());editText.setSelection(index);}}@Override//这个方法是在Text改变之后被调用public void afterTextChanged(Editable s) {}});
public CharSequence trim(CharSequence cs) {int len = cs.length();int st = 0;while ((st < len) && (cs.charAt(st) <= ' ')) {st++;}while ((st < len) && (cs.charAt(len - 1) <= ' ')) {len--;}return ((st > 0) || (len < cs.length())) ? cs.subSequence(st, len) : cs;
}

//借鉴了几位博客改进了一下。

手机号自动加入空格,禁止用户输入空格相关推荐

  1. python中空格怎么打_python输入空格_python以空格为分隔输入_python如何让用户输入空格 - 云+社区 - 腾讯云...

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 流式语音合成 python3 sdk 下载地址.python2 sdk 下载地址 ...

  2. 页面禁止用户输入中文实现方式

    具体步骤: 方法一:用文本框的CSS属性ime-mode实现. <input οnpaste="return false" οndragenter="return  ...

  3. 禁止输入框输入空格 onkeyup

    原生 <input type="text" onkeyup="this.value=this.value.replace(/\s+/g,'')">v ...

  4. python怎样输入空格_python 怎么输入空格

    在使用内置模块的时候需要导入,例如import abc,则导入abc模块,当然模块也可以自己写,相当于一个类,后面放到类里说,这个因为环境闲置,有些无法执行,只能理解了 os系统操作 import o ...

  5. android输入自动补全,Android用户输入自动提示控件AutoCompleteTextView使用方法

    一.简介 1.AutoCompleteTextView的作用 2.AutoCompleteTextView的类结构图 也就是拥有EditText的各种功能 3.AutoCompleteTextView ...

  6. 在mathtype里面输入空格

    我们单击[样式],将默认的[数字]选项改成[文字],然后在需要加空格的地方输入空格键即可.

  7. flutter 怎么拦截请求_flutter中事件传递:禁止用户交互 获取点击事件

    可能有时候会需要这种需求 比如文本框可以响应点击事件但是禁止用户输入 直接粗暴的设置 TextField(enabled: false,) 这样就无法得知ontap事件了, 当然你可以用 enable ...

  8. 用户输入一串整数和任意数目的空格,程序自动对所有的整数进行求和

    要求:编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置.当用户按下键盘上的"Enter"键时,数据输入结束.程序自动对所有 ...

  9. Java黑皮书课后题第7章:**7.17(对学生排序)编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名。假定姓名是不包含空格的字符,使用next()读取

    **7.17(对学生排序)编写一个程序,提示用户输入学生个数.学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名.假定姓名是不包含空格的字符,使用next方法读取 题目 题目描述 破题 代码 ...

最新文章

  1. 聊聊高并发(十六)实现一个简单的可重入锁
  2. FTL页面常用到的一些方法combobox、combotree、datagrid
  3. AGG第二十课 agg::ellipse 方法approximation_scale()
  4. python读写修改配置文件(ini)
  5. 如何集成和使用EclEmma插件来获得良好的Junit覆盖率
  6. CSUOJ 1196- Staginner 去爬山
  7. Android Log工具类,Toast工具类,获取当前方法名称
  8. C/C++的const区别
  9. “Max“ stands for big
  10. HoloLens还太远 必应才是微软目前的重头戏
  11. 服务器server怎么显示后缀名,window7系统怎么显示文件后缀名(图文)
  12. 一位程序媛MM眼中的程序员???
  13. android 获取N天前的日期或N天后日期
  14. 如何用计算机蓝牙发送文件,电脑怎么利用蓝牙使手机和电脑互传文件
  15. Spring security5.5.7出现Encoded password does not look like BCrypt异常
  16. Word第n页显示第一页的页码
  17. 详解 yolo配置文件各参数的含义
  18. python求鸡兔同笼 鸡兔总数鸡兔腿_编写一个程序解鸡兔同笼问题:已知鸡兔总数为a,鸡兔腿总数为b,计算鸡兔各有多少只?...
  19. 算法初步--什么是算法
  20. 智能盆栽养花,不一样的养殖趣味

热门文章

  1. 英特尔淘汰迷你电脑,宣布放弃 NUC 业务!
  2. android动态逆向,Android逆向之动态分析so篇
  3. numpy append函数
  4. nimble 2 蓝牙开发API
  5. 安全系列之——主流 Hash 散列算法介绍和使用
  6. 3.15晚会不够“狠” 央视让观众失望
  7. c语言各个类型所占字节数,C语言中不同类型数据所占字节数汇总
  8. Linux进程照妖镜strace命令
  9. SQL Server 性能调优(内存)
  10. MAX232引脚说明