我有一个edittext
,如果输入的输入数字为100000
,则结果必须为100.000
,如果我输入的输入为1000000
,则结果必须为1.000.000
是.
。
从最后一个到开头的每3个字符后必须有一个" tambah = (EditText)rootView.findViewById(R.id.total);
tambah.setOnFocusChangeListener(new OnFocusChangeListener(){
public void onFocusChange(View v, boolean hasFocus) {
// ...
}
"
这是我的代码:
{{1}}
答案 0 :(得分:0)
您应该使用'java.text.NumberFormat':
java.text.NumberFormat nf = java.text.NumberFormat.getInstane();
nf.setMaximumFractionDigits(0);
String formattedNumber = nf.format(Integer.parseInt(edittext.getText());
答案 1 :(得分:0)
使用editText.setOnTextChangeListener()并检查每次位置是否为3的倍数。(点)那里..
答案 2 :(得分:0)
这是我用来输入美元的东西。它确保始终只有小数点后2位。您应该可以通过删除$ sign来使其适应您的需求。
amountEditText.setRawInputType(Configuration.KEYBOARD_12KEY);
amountEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(!s.toString().matches("^\\$(\\d{1,3}(\\,\\d{3})*|(\\d+))(\\.\\d{2})?$"))
{
String userInput= ""+s.toString().replaceAll("[^\\d]", "");
StringBuilder cashAmountBuilder = new StringBuilder(userInput);
while (cashAmountBuilder.length() > 3 && cashAmountBuilder.charAt(0) == '0') {
cashAmountBuilder.deleteCharAt(0);
}
while (cashAmountBuilder.length() < 3) {
cashAmountBuilder.insert(0, '0');
}
cashAmountBuilder.insert(cashAmountBuilder.length()-2, '.');
cashAmountBuilder.insert(0, '$');
amountEditText.setText(cashAmountBuilder.toString());
// keeps the cursor always to the right
Selection.setSelection(amountEditText.getText(), cashAmountBuilder.toString().length());
}
}
});
答案 3 :(得分:0)
首先使用%,d
格式格式化您的字符串,然后将所有(,)替换为(。),如下所示...
String formatedString = (String.format("%,d", 1000000)).replace(',', '.');
Log.d("Fomated String", formatedString);
<强>输出:强>
D/Fomated String(20323): 1.000.000
答案 4 :(得分:0)
如何使用以下循环来完成它。
String Number=1000000;
final int THREE=3;
int noOfPoints,length,Start=0,End=0;
length=Number.length();
noOfPoints=length%THREE;
if(noOfPoints*THREE==length)
noOfPoints--;
String OutPut="";
for(int Count=0;Count<=noOfPoints;Count++)
{
Start=End;
if(Count==0)
End=length-(THREE*noOfPoints);
else
End=Start+THREE;
if(Count!=noOfPoints)
OutPut+=Number.substring(Start,End)+".";
else
OutPut+=Number.substring(Start,End);
}
答案 5 :(得分:0)
这是另一个答案。希望它有用,简单,它会格式化给定参数的大小(格式化,在示例调用时) 看看。
/ ** * * @param输入 * @param formatsize * @return * /
public String format(String input, int formatsize) {
String formattedNumberString = "";
int len = input.length();
if (len < formatsize)
return input;
if (formatsize < 2) {
System.out.println("Opppps");
return "";
}
for (int i = 0; i < len; i += formatsize) {
if (i < formatsize) {
formattedNumberString = input.substring(input.length()
- formatsize - 1, input.length() - 1);
} else {
if (len - i <= formatsize) {
formattedNumberString = input + "." + formattedNumberString;
} else {
formattedNumberString = input.substring(input.length()
- formatsize - 1, input.length() - 1)
+ "." + formattedNumberString;
}
}
if (input.length() >= formatsize)
input = input.substring(0, len - i - formatsize);
}
return formattedNumberString;
}
将此函数称为..(例如)
NumberFormatterClass nfc = new NumberFormatterClass();
System.out.println(nfc.format("1032432420000000000000", 3));
System.out.println(nfc.format("1032432420000000000000", 4));
System.out.println(nfc.format("1032432420000000000000", 5));
System.out.println(nfc.format("1032432420000000000000", 2));
...问候