Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android EditText中实时编辑的格式编号####_Java_Android - Fatal编程技术网

Java android EditText中实时编辑的格式编号####

Java android EditText中实时编辑的格式编号####,java,android,Java,Android,我正在从事Android项目。 我需要在实时编辑中格式化EditText中的数字 例如: 当我输入:1234时,它应该是1234 当我输入:0123时,它应该是0123 我现在拥有的东西不起作用:/,我已经将EditText设置为仅数字输入 editText.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Edi

我正在从事Android项目。 我需要在实时编辑中格式化EditText中的数字

例如:

  • 当我输入:1234时,它应该是1234
  • 当我输入:0123时,它应该是0123
我现在拥有的东西不起作用:/,我已经将EditText设置为仅数字输入

editText.addTextChangedListener(new TextWatcher() {

                @Override
                public void afterTextChanged(Editable s) {
                    try {

                        //String str = s.toString();

                        //String str = String.format("%,d", s.toString()
                        //        .replaceAll(",", ""));
                        editText.removeTextChangedListener(this);
                        String str = s.toString().replaceAll(",", "");
                        String edit = "";
                        if(str.length()==2)
                        {
                            int pos = editText.getSelectionStart();
                            String firstChar = str.substring(0, 1);
                            String secondChar = str.substring(1, str.length()-1);
                            edit = firstChar+ "," +secondChar;  
                        }
                        else
                        {
                            edit = str;
                        }
                        editText.setSelection(edit.length());
                        editText.setText(edit);
                        editText.addTextChangedListener(this);
                    } catch (NumberFormatException e) {
                        e.printStackTrace();
                    }
                }
                public String doubleToStringNoDecimal(double d) {
                    DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);;
                    formatter .applyPattern("#,###");
                    return formatter.format(d);
                }

                @Override
                public void beforeTextChanged(CharSequence c, int arg1, int arg2, int arg3) {
//                  String str = editText.getText().toString(); 
//                  len = str.length();
                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) { 
//                  String str = editText.getText().toString();

                }


            });

您可以在代码中尝试此选项:

String num = "1234567";
num = new StringBuilder(num).reverse().toString().replaceAll("(\\d{3})", "$1,");
num = new StringBuilder(num).reverse().toString().replaceAll("^,|,$", "");
System.out.println(num);
输出:

1,234,567