银行卡和手机号自动补空格

转自:http://www.apkbus.com/home.php?mod=space&uid=74625&do=blog&id=42956

银行卡和手机号自动补空格

热度 1已有 135 次阅读2012-10-15 13:22 |系统分类:Android开发| 手机号银行卡号自动补空格

最近在做银联的手机产品,经理提议在银行卡号每四位补一个空格,以增加用户体验
举例:银行卡号:6221553741546546565
效果:6221 5537 4154 6546 565
怎么实现呢?主要是要用到,addTextChangedListener,setSelection等函数

public  static  void  fillBankNumSpeace(final  EditText mAddCardNumEdt){//银行卡补齐 空格
       mAddCardNumEdt.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (count == 1) {
if (s.length() == 4) {
mAddCardNumEdt.setText(s + " ");
mAddCardNumEdt.setSelection(5);
}
if (s.length() == 9) {
mAddCardNumEdt.setText(s + " ");
mAddCardNumEdt.setSelection(10);
}
if (s.length() == 14) {
mAddCardNumEdt.setText(s + " ");
mAddCardNumEdt.setSelection(15);
}
if (s.length() == 19) {
mAddCardNumEdt.setText(s + " ");
mAddCardNumEdt.setSelection(20);
}
} else if (count == 0) {
if (s.length() == 4) {
mAddCardNumEdt.setText(s.subSequence(0,
s.length() - 1));
mAddCardNumEdt.setSelection(3);
}
if (s.length() == 9) {
mAddCardNumEdt.setText(s.subSequence(0,
s.length() - 1));
mAddCardNumEdt.setSelection(8);
}
if (s.length() == 14) {
mAddCardNumEdt.setText(s.subSequence(0,
s.length() - 1));
mAddCardNumEdt.setSelection(13);
}
if (s.length() == 19) {
mAddCardNumEdt.setText(s.subSequence(0,
s.length() - 1));
mAddCardNumEdt.setSelection(18);
}
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
}
});
      }
注意:一般用户输入了第一遍卡号,要求再次输入账号,以验证两次卡号是否一致,这时不能直接调trim()去空格,再用 equals 比较,因为有的用户可能使用复制,粘贴功能,所以最好还是用replace("")去掉
空格再比较。
      
    手机号也一样。
      public  static  void  fillTelSpeace(final  EditText mAddCardNumEdt){//手机号码后 补齐 空格
       mAddCardNumEdt.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (count == 1) {
if (s.length() == 3) {
mAddCardNumEdt.setText(s + " ");
mAddCardNumEdt.setSelection(4);
}
if (s.length() == 8) {
mAddCardNumEdt.setText(s + " ");
mAddCardNumEdt.setSelection(9);
}
if (s.length() == 11) {
mAddCardNumEdt.setText(s + " ");
mAddCardNumEdt.setSelection(11);
}
 
}  else if (count == 0) {
if (s.length() == 4) {
mAddCardNumEdt.setText(s.subSequence(0,
s.length() - 1));
mAddCardNumEdt.setSelection(3);
}
if (s.length() == 9) {
mAddCardNumEdt.setText(s.subSequence(0,
s.length() - 1));
mAddCardNumEdt.setSelection(8);
}
if (s.length() == 11) {
mAddCardNumEdt.setText(s.subSequence(0,
s.length() - 1));
mAddCardNumEdt.setSelection(10);
}
 
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
}
});
      }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值