在3个字符后添加一个空格

时间:2013-05-07 12:17:32

标签: java android android-edittext android-progressbar

我有一个搜索栏,在进行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) {}
    });

3 个答案:

答案 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