我有一个搜索栏,在进行EditText时会将值设置为1500到48500。我希望在改变进度后的3个字符之后添加一个空格,例如1500变为1 500,1 600,30 000,48 500.我怎样才能实现这一点。我的意思是格式化进展的数字,以便在3个字符后设置一个空格。
这是我的工作
decimalFormat = new DecimalFormat("0 000");
SeekBar mSeekbar = (SeekBar) findViewById(R.id.seekvalue);
mSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
progress = progress + 1500;
edt_validate.setText(decimalFormat.format(Integer.toString(progress)));
//edt_validate.setText(Integer.toString(progress + 1500));
}
public void onStartTrackingTouch(SeekBar seekBar) {}
public void onStopTrackingTouch(SeekBar seekBar) {}
});
答案 0 :(得分:1)
您可以使用DecimalFormat课程。我没有得到真正的正则表达式,所以我这样做了(只要小心null
字符串):
DecimalFormat df = new DecimalFormat("#,###,###");
edt_validate.setText(df.format(progress).replaceAll(",", " ")));
答案 1 :(得分:0)
这样的事情应该使用自制的实现。我没有测试这个,因为我没有在这台电脑上运行eclipse所以它可能需要一些微调
String s ="1000";
String temp="";
if(s.length>=4){ // do nothing if length is less then 4
for (int i = 0; i < s.length(); i++){
if(i%3=0){ // every third char, add a space along with the value in s
temp.charAt(i)=" "; //first add the space
temp.charAt(i+1)=s.charAt(i); // then add the char at the next index
}
else
temp=s.charAt(i); // If its not a "third char" just add it without the space
}
}
答案 2 :(得分:0)
我会使用DecimalFormat。以下应该可以解决问题:
int numberToFormat = 10000;
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance((Locale.getDefault()));
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
String formattedResult = formatter.format(numberToFormat).replaceAll(","," ");
这将给出10 000