在EditText(Android)中过滤多个空格

时间:2014-12-05 11:11:34

标签: java android spacing

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

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;
        }

5 个答案:

答案 0 :(得分:4)

试试这个

    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) {

        }
    });

答案 1 :(得分:1)

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);
                }
            });

答案 2 :(得分:0)

你可以调用EditText.addTextChangedListener(TextWatcher)

然后实现自己的TextWatcher接口。

关键是

    afterTextChanged(Editable s)

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

答案 3 :(得分:0)

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

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

希望它有所帮助!!

答案 4 :(得分:0)

我知道它的答案太老了,仍然想分享一些有用的代码作为解决方案:

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;
        }
    };
}