Я хочу сложить несколько чисел из EditText. Я хочу, чтобы он работал как для Европы, так и для других стран, поэтому он должен работать с запятыми и точками в качестве разделителей. Проблема в том, что приложение вылетает, если пользователь случайно ставит 2 или более точки или точку и запятую. Есть ли быстрый способ проверить и удалить ненужные разделители? Большое спасибо!
Это мой код на данный момент:
android:inputType = "number|numberDecimal"
android:digits = "0123456789.,"
.replace(",", "."));




Это должно помочь,
.replaceAll("\\,+", ".").replaceAll("\\.+", ".")
если есть какие-либо запятые, первая заменит все запятые точками, а вторая заменит все точки одной точкой
Спасибо, это отлично работает для чего-то вроде 1 ... 1 или 1`` 2, но все равно вылетает на чем-то вроде 1,1,
@einUsername Значит, точка может существовать только в конце строки? Не может быть таких строк, как 11.2?
Это работает, если в середине строки есть одна / несколько точек подряд, например 0..0. Но это не сработает, если точки разделены числом, например 0,0.0, или если точка находится в начале или конце строки, например .0 и 0.
да. Я понимаю эту роль. Я просто хочу кое-что прояснить. Можно ли использовать числа вроде 11.21 в виде цифр? Если это возможно, то если кто-то вводит 11.2.1 в виде цифр, как мы можем узнать, что 11.21 или 112.1 правильные? это было бы невозможно, правда?
11.21 работает. Да, невозможно сказать, что они имеют в виду. Но давайте предположим, что первая точка была правильной.
Или, может быть, просто показать сообщение об ошибке, если точек / запятых больше одной.
да. Мы не можем решать такие сценарии. Лучше всего показать сообщение об ошибке и позволить пользователю решить
Это заменит всю строку на 0. Это некрасиво, но, по крайней мере, предохраняет приложение от сбоев. Думаю, пока это нужно сделать;)
if (string.getText (). toString (). соответствует (". \ .. \ .. *")) {string.setText ("0");}
Вы можете не беспокоиться обо всем этом вместе и загрузить JavaScript WebView для EditText, поэтому, когда пользователь нажимает
submit, строка из EditText оценивается как математическое выражение с использованием JS (я сделал это с моим самым первым приложением-калькулятором для Android, а не с лучшее решение, но знайте, что это просто и очень возможно). Другой / самый простой способ на чистом Java - использовать методreplaceAll()для строки, чтобы удалить лишние символы, которые вы хотите, после того, как вы определили, что есть ненужные разделители. Или вы можете показать тост с ошибкой, если ваша логика обнаружит лишние разделители и позволит пользователю исправить это.