【发布时间】:2017-02-02 07:20:36
【问题描述】:
我能问一下如何格式化字符串值吗? 5000000.00 到 5,000,000.00?显然我正在为 android 应用程序做与货币相关的事情,我可以设法将字符串值 5000000 格式化为 5,000,000,而无需在编辑文本中使用点分隔符。我想存储字符串值以供以后用于 parseDouble 以便我需要计算并有一些小数。我设法只使用逗号分隔符,但是关于如何使点也显示在编辑文本中的任何想法?
以下是我的代码:
amountText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
amountText.removeTextChangedListener(this);
if(!amountText.getText().toString().equals(""))
{
try {
String editText = amountText.getText().toString();
String newStr = editText.replace("$", "").replace(",", "");
customer.getProperty().get(groupPosition).setAmount(newStr);
String formattedString = formatString(customer.getProperty().get(groupPosition).getAmount());
amountText.setText(formattedString);
amountText.setSelection(amountText.getText().length());
// to place the cursor at the end of text
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
amountText.addTextChangedListener(this);
}
});
public String formatString(String s)
{
String givenstring = s.toString();
Long longval;
if (givenstring.contains(",")) {
givenstring = givenstring.replaceAll(",", "");
}
longval = Long.parseLong(givenstring);
DecimalFormat formatter = new DecimalFormat("#,###,###");
String formattedString = formatter.format(longval);
return formattedString;
}
我已经测试过使用 parseDouble 但是当我输入“。”时在EditText 中,它不会出现,如果我改用长变量,它会给出错误的格式和错误。 (java.lang.NumberFormatException:无效的长:“500000.00”)。所有值都在字符串中完成,稍后处理我将在计算时解析值。
感谢您并感谢任何人的指导,如果存在类似的帖子,我深表歉意,因为我还没有设法找到解决方案。
【问题讨论】:
-
我也尝试过使用十进制格式的不同模式“###,###.###”,但没有运气,它仍然不起作用。
标签: android android-studio android-edittext decimalformat