сохраняю там циферное значение в стринге (так надо!), но есть юзеры, которые добавляют туда буквы. Надо бы сделать так, чтобы при сохранении параметра если там имеются и цифры, и буквы, чтобы приложение их отсекало и сохраняло только цифры
replaceAll и регуляркой отсечь всё лишнее? А ещё лучше на этапе ввода для пользователя ограничить inputType на только числовой
fun removeNonNumericChars(input: String): String { // Use regular expression to match all non-numeric characters and replace them with an empty string return input.replace(Regex("[^0-9]"), "") }
ну это неочевидное поведение - лучше так не делать и не давать сохранять буквы в шаред префы, а не заменять постфактум
а можно ли сделать так, чтобы оно знак "-" не подтирало, если он есть??
Регулярку за мени на [^0-9-]
короче у editText есть константы для inputType number — положительные целые числа numberDecimal — положительные дробные числа numberSigned — отрицательные целые числа их можно комбинировать через символ "|" если нужны отрицательные дробные числа , то параметр будет "numberDecimal|numberSigned" это позволит поставить один знак минус вначале и одну точку в середине. И все, никаких regex'ов
Обсуждают сегодня