2017-03-01 16 views
0

入力した番号をXXXXXX/XX/Xという形式で書式化したいのですが、代わりにインデックスを使用して位置6と9に/を挿入します削除上で、できるだけ早くそれはスラッシュのいずれかに達すると削除に失敗した場合、以下の私のコードです:TextWatcherを使用しているAndroidの書式設定のテキスト

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

     } 

誰もがよりよい解決策を得ましたか。

答えて

0

この番号の整形は、電話番号であればそうでない場合は、あなたが行うことができhttps://github.com/googlei18n/libphonenumber

を使用してみてください:

x = x.substring(0, 6) + "/" + x.substring(6, 9) + "/" + x.substring(9, 11); 
関連する問題