Java android EditText中实时编辑的格式编号####
我正在从事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
- 当我输入:1234时,它应该是1234
- 当我输入:0123时,它应该是0123
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