【问题标题】:filter more than one space in EditText (Android)在 EditText (Android) 中过滤多个空格
【发布时间】:2015-02-03 13:06:52
【问题描述】:

我需要限制用户在单词之间输入多个空格。有什么办法可以限制用户每个单词只有一个空格???

if (validateStatus
                && RegistraionRequestType.RegisterationCompleteReq.descdet.trim()
                .length() < 50) {
            Log.e("Validate----------------------  ",RegistraionRequestType.RegisterationCompleteReq.descdet+ "    --ValidateXCalled");
            warning = getResources().getString(R.string.description_msg);
            registeration_frm_et_id_description.requestFocus();
            validateStatus = false;
        }

【问题讨论】:

    标签: java android spacing


    【解决方案1】:

    试试这个

        editText.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                editText.setText(s.toString().trim().replaceAll("\\s+", " "));
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
    
            }
    
            @Override
            public void afterTextChanged(Editable s) {
    
            }
        });
    

    【讨论】:

      【解决方案2】:

      你可以调用EditText.addTextChangedListener(TextWatcher)

      然后实现你自己的 TextWatcher 接口。

      关键是

          afterTextChanged(Editable s)
      

      您可以从第一个参数检查 EditText 中的现有文本。如果最后一个字符是 2 个连续的空格,您可以通过编程将文本设置为其子字符串 (0, length-1)。

      【讨论】:

        【解决方案3】:
        editText.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) {
                            String temp = s.toString();
                            temp.replace("  ", " ");
                            editText.setText(temp);
                        }
                    });
        

        【讨论】:

          【解决方案4】:

          如果要删除多个空格,请使用以下代码:

          string.replaceAll("\\s", " ");
          

          希望对你有帮助!!

          【讨论】:

            【解决方案5】:

            我知道这个问题太老了,无法回答,仍然想分享一些有用的代码作为解决方案:

            private InputFilter spaceFilter() {
                return new InputFilter() {
                    public CharSequence filter(CharSequence source, int start, int end,
                                               Spanned dest, int dstart, int dend) {
                        for (int i = start; i < end; i++) {
                            if (Character.isWhitespace(source.charAt(i))) {
                                if (dstart == 0 || (dstart > 1 && dest.charAt(dstart - 1) == ' ')) return "";
                            }
                        }
                        return null;
                    }
                };
            }
            

            【讨论】:

            • @PratikMohanraoGondil :它对我有用,请给我看你的代码 sn-p 以便我可以查看它
            • dstart == 0 || (dstart &gt; 1 是指i 吗?而不是dstart?
            猜你喜欢
            • 2012-02-02
            • 2012-09-13
            • 1970-01-01
            • 2012-03-13
            • 2017-12-12
            • 1970-01-01
            • 1970-01-01
            • 2017-07-05
            • 2020-06-18
            相关资源
            最近更新 更多