我想以格式格式化我的输入号码xxxxxx/xx/x我提出了一个算法,但是它很糟糕,但它很漂亮,而是使用索引在位置6和9上插入 /
,问题出现在删除上,如果一旦无法删除任何斜率,则以下是我的代码:
@Override
public void afterTextChanged(Editable s) {
edt.removeTextChangedListener(this);
if(TextUtils.isEmpty(s))
return;
String string = s.toString().replace(" ", "");
if(string.length() > 10)
string = string.substring(0, 11);
StringBuilder sb = new StringBuilder(string);
if(sb.length() >= 6)
sb.replace(6, 7, "");
if(sb.length() >= 6 )
sb.insert(6, "/");
if(sb.length() >= 9)
sb.replace(9, 10, "");
if(sb.length() >= 9)
sb.insert(9, "/");
edt.setText(sb.toString());
edt.setSelection(sb.length());
edt.addTextChangedListener(this);
}
任何人都有更好的解决方案?
如果形成此号码是电话号码,请使用https://github.com/googlei18n/libphonenumber
否则您可以做:
x = x.substring(0, 6) + "/" + x.substring(6, 9) + "/" + x.substring(9, 11);