Я отслеживаю некоторые ключевые слова в Твиттере, используя команду ниже. Я хочу напечатать только " какие символы может принимать имя таблицы базы данных? Может ли он принимать числа? И может ли число быть первым символом?
2) Мне удалось проверить EditText
с помощью TextWtacher
. Вот код:
et_name.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
String filtered_str = s.toString();
if (filtered_str.matches(".*[^a-z^0-9].*")) {
filtered_str = filtered_str.replaceAll("[^a-z^0-9]", "");
s.clear();
// s.insert(0, filtered_str);
Toast.makeText(context,
"Only lowercase letters and numbers are allowed!",
Toast.LENGTH_SHORT).show();
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
В настоящее время, если пользователь вставляет любой символ, кроме строчных букв и цифр, текстовое поле очищается.
Если я раскомментирую s.insert (0, filter_str);
, чтобы заменить EditText отфильтрованной строкой, мое приложение зависнет. И угадайте, что я нашел в отладке?
ERROR / AndroidRuntime (2454): java.lang.StackOverflowError
= D
Вопрос в том ... как я могу заменить текст s?
-> s.replace (0, s.toString (). Length (), filter_str);
(удалить s.clear, конечно) тоже не работает.