В тексте редактирования Android, как разделить ввод 10-значного числа пробелом? Я использую Android Text Watcher и пытаюсь ввести в поле несколько 10-значных чисел. Проблема возникает, когда несколько чисел копируются и вставляются в поле, и в этот раз они не занимают эти пробелы. Пожалуйста, дайте мне знать решение, чтобы разрешить ввод нескольких чисел с пробелом после каждого 10-значного числа, когда число копируется из другого места.
Android: пробел после каждых 10 цифр в тексте редактирования с помощью средства просмотра текста
comment
что происходит, когда вы вставляете номер?
- person Vladyslav Matviienko   schedule 14.08.2018
comment
отпишитесь, пожалуйста, что вы сделали?
- person Saurabh Vadhva   schedule 14.08.2018
comment
Как вы будете уверены, что номер состоит из 10 цифр, что, если у него есть префикс кода страны?
- person Khemraj Sharma   schedule 14.08.2018
comment
дублирование - stackoverflow.com/questions/10252757/
- person Arnold Brown   schedule 14.08.2018
comment
afterTextChanged(Editable s){if (s.length() › 0&&(s.length() %11)==0){final char c = s.charAt(s.length() - 1);if (space = = c{s.delete(s.length() - 1,s.length()); я сделал это в Textwatcher } } if (s.length() › 0 && (s.length() % 11) == 0) { char c = s.charAt(s.length() - 1); if (Character.isDigit(c) && TextUtils.split(s.toString(), String.valueOf(space)).length ‹= 10 ) { s.insert(s.length() - 1, String.valueOf(пробел)); } } }
- person Sne   schedule 14.08.2018
Ответы (2)
Это будет работать как для типа, так и для копирования/вставки из другого места.
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;
}
}
});
person
Anisuzzaman Babla
schedule
14.08.2018
Он будет работать как для ввода, так и для копирования/вставки. Вы пробовали это? @Сне
- person Anisuzzaman Babla; 14.08.2018
Добро пожаловать. Удачи.
- person Anisuzzaman Babla; 16.08.2018
Отредактируйте и используйте следующий код в соответствии с вашими потребностями.
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(" ", "");
person
amit
schedule
14.08.2018