2017-03-01 4 views
0

Ich möchte meine eingegebene Nummer im Format XXXXXX/XX/XI haben mit einem Algorithmus aber seine hübsche Mist, stattdessen habe ich einen Index zum Einfügen einer / auf Position 6 und 9, Problem kommt in auf die Löschung, schlägt fehl, wenn so schnell gelöscht werden, da es eine der Schrägstriche erreicht, unten ist mein Code:Android Formatierung Text mit TextWatcher

@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); 

     } 

jemand eine bessere Lösung hat?

Antwort

0

Wenn diese Zahl Formatierung einer Telefonnummer ist versuchen, https://github.com/googlei18n/libphonenumber

Ansonsten verwenden Sie tun können:

x = x.substring(0, 6) + "/" + x.substring(6, 9) + "/" + x.substring(9, 11);