Android:编辑货币的文本验证

标签 android filter

我有一个编辑文本,用户可以在其中输入金额,我希望对编辑文本有一些限制

  1. 金额不能大于100000
  2. 用户输入最多两位小数的金额,例如 99999.50

-已编辑-已解决

我如何实现这一目标,我是否必须创建一个过滤器或者我可以使用myEdittext.addTextChangedListener(new TextWatcher()中的正则表达式来实现它...

myAmountEditText.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {}

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

            @Override
            public void afterTextChanged(Editable s) {
              if(amount!=null && amount.length()>=1 ){
                if(amount.contains(".")){
                    int indexOFdec =  amount.indexOf(".");

                    if(indexOFdec >=0) {
                       if(amount.substring(indexOFdec).length() >3){
                           amount = amount.substring(0, amount.length()-1);
                           myAmountEditText.setText(amount);
                           myAmountEditText.setSelection(myAmountEditText.getText().length());
                       }
                    }
                }

                Double a = Double.parseDouble(amount.toString());

                if(a>0 && a<100000.00){
                    //my stuff
                }else{
                    Toast.makeText(context, "amount greater than 100000", Toast.LENGTH_SHORT).show();
                }
            }
        });

最佳答案

您可以使用此代码:

edittext.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){
        String strEnteredVal = edittext.getText().toString();

        if(!strEnteredVal.equals("")){
        int num=Integer.parseInt(strEnteredVal);
        if(num<100000){
         edittext.setText(""+num);
        }else{
         edittext.setText("");
        }
    }

}); 

我认为我们可以这样努力:

String str = editText.getText().toString();

    int indexOFdec =  str.indexOf(".");

    if(indexOFdec >=0) {
       if(str.substring(indexOFdec).length() >2)
       {
           Toast.makeText(getApplicationContext(), "Print a message here", Toast.LENGTH_SHORT).show();
           return;
       }
    }

关于Android:编辑货币的文本验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040718/

相关文章:

android - com.jayway.maven.plugins.android.generation2 : Plugin execution not covered by lifecycle configuration?

java - 假人的频率/音调检测

android - 不同的 Facebook 应用程序使用相同的 key 哈希

c++ - 如何删除 "Ctrl + Backspace"特殊字符?

android - Gradle 找不到插件

android - 将 mimetype 'application/octet-stream' 与 SAF 选择器一起使用适用于本地文件,但不适用于 Google Drive 中的相同文件

Angular 剑道: kendo-grid-column filter label for booleans

将字符串替换为数字,但 R 数据框中包含 2020 或 2021 的字符串除外

java - 在 Java 中过滤用户字体中丢失的字符

php - 从父项中获取过滤后的子项