Android:使用文本观察器在编辑文本中每10位数字后留空格

时间:2018-08-14 07:08:39

标签: android android-edittext textwatcher

在android编辑文本中,如何用空格分隔输入的10位数字?我正在使用android text watcher,并且尝试在字段中输入多个10位数字。当在字段中复制并粘贴多个数字时,就会出现问题,而此时并没有占用这些空格。请让我知道一个解决方案,以便在从其他地方复制数字时,允许在每10位数字后输入多个数字,并在每个数字后留一个空格。

2 个答案:

答案 0 :(得分:0)

这将适用于类型和在其他地方复制/粘贴

yourEditText.addTextChangedListener(new TextWatcher() {
        private static final char space = ' ';

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

            int pos = 0;
            while (true) {
                if (pos >= s.length()) break;
                if (space == s.charAt(pos) && (((pos + 1) % 11) != 0 || pos + 1 == s.length())) {
                    s.delete(pos, pos + 1);
                } else {
                    pos++;
                }
            }
            pos = 10;
            while (true) {
                if (pos >= s.length()) break;
                final char c = s.charAt(pos);
                if (Character.isDigit(c)) {
                    s.insert(pos, "" + space);
                }
                pos += 11;
            }
        }
    });

答案 1 :(得分:0)

根据需要编辑和使用以下代码

StringBuilder s;
s = new StringBuilder(yourTxtView.getText().toString());

for(int i = 10; i < s.length(); i += 10){
s.insert(i, " "); // this line inserts a space
}
yourTxtView.setText(s.toString());

当需要获取不带空格的字符串时,请执行以下操作:

String str = yourTxtView.getText().toString().replace(" ", "");