-2

I want to remove the dollar sign to my amount formatter but its not working I already assigned the replace it it contains an dollar sign. How can I do this?

Here is my code for Text Watcher.

NumberFormat canadaEnglish = NumberFormat.getCurrencyInstance(Locale.CANADA);
        public class MoneyTextWatcher implements TextWatcher {
        private final WeakReference<EditText> editTextWeakReference;
        boolean hasFractionalPart = false;
        private EditText editText;

        public MoneyTextWatcher(EditText editText) {
            editTextWeakReference = new WeakReference<EditText>(editText);
            this.editText = editText;
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            if (s.toString().contains(String.valueOf(df.getDecimalFormatSymbols().getDecimalSeparator()))) {
                hasFractionalPart = true;
            } else {
                hasFractionalPart = false;
            }
            if (mIsInWatcher)
                return;
            mIsInWatcher = true;
        }

        @Override
        public void afterTextChanged(Editable editable) {
            if (editText == null)
                return;
            String s = editable.toString();
            editText.removeTextChangedListener(this);
            String cleanString = s.toString().replaceAll("[$,.]", "");
            String formatted = "";
            System.out.println(cleanString);

                BigDecimal parsed = new BigDecimal(cleanString).setScale(2,BigDecimal.ROUND_FLOOR).divide(new BigDecimal(100),BigDecimal.ROUND_FLOOR);
                formatted = canadaEnglish.format(parsed).replace("\\$",pesoCurrency);
                System.out.println("formatted > " + formatted);
                String trimFormatted = formatted.replace("\\$", pesoCurrency);
                System.out.println("trimFormatted > " + trimFormatted);
                editText.setText(formatted.replace("\\$", ""));
                editText.setSelection(formatted.length());
            editText.addTextChangedListener(this);

        }
    }
Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
Robit
  • 11
  • 1
  • 6

2 Answers2

0

Try this:

String charToReplace = new String[]{"[","$",",",".","]"};

for(String s: charToReplace)
    cleanString = cleanString .replace(s,"");
DJphy
  • 1,292
  • 1
  • 17
  • 31
0

Here is my MoneyTextWatcher.. Thanks for the response DroidWorm.. i just needed to used replaceAll(args.., args..) in assigning text from my edittext not replace(args.., args..)

public static class MoneyTextWatcher implements TextWatcher {

        private EditText editText;

        public MoneyTextWatcher(EditText editText) {
            this.editText = editText;
        }

        @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 editable) {
            String formatted = "";
            if (editText == null)
                return;
            String s = editable.toString();
            editText.removeTextChangedListener(this);
            String cleanString = s.toString().replaceAll("[\u20B1,]", "");

            System.out.println("cleanString > " + cleanString);
            BigDecimal parsed = new BigDecimal(cleanString.equals("") ? "0.00"
                    : cleanString).setScale(2, BigDecimal.ROUND_FLOOR).divide(
                    new BigDecimal(100), BigDecimal.ROUND_FLOOR);

            formatted = canadaEnglish.format(parsed)
                    .replaceAll("\\$", CURRENCY);

            //System.out.println("formatted > " + formatted);
            editText.setText(formatted.replace("\\$", ""));
            editText.setSelection(formatted.length());
            editText.addTextChangedListener(this);
        }
    }
Robit
  • 11
  • 1
  • 6