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

Android: Space after every 10 digit in edit text using text watcher

在android编辑文本中,如何分隔space输入的10位数字?我正在使用 android 文本观察器,我正在尝试在该字段中输入多个 10 位数字。当多个数字被复制并粘贴到字段中时,问题就出现了,而那个时候,它不需要那些 spaces。请让我知道一个解决方案,以便在从其他地方复制数字时允许在每 10 位数字后输入多个数字 space。

这对来自其他地方的 typecopy/paste 都有效。

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

根据您的需要编辑并使用以下代码

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(" ", "");